1) 将 DrawingImage.xaml 添加到项目并将其属性设置为“BuildAction=Content”和“始终复制”。否则,您可以从外部动态加载 XAML,因为我将要解释的逻辑也适用于松散的 xaml。
2) 编写一个转换器将 XAML uri 转换为 UIELement,在您的情况下,它将始终是 DrawingImage
public class FileToUIElementConverter :IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
FileStream fileStream = new FileStream((string)parameter, FileMode.Open);
return XamlReader.Load(fileStream) as DrawingImage;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
3)编写XAML如下
<Window.Resources>
<local:FileToUIElementConverter x:Key="uriToUIElementConverter"/>
</Window.Resources>
<Grid>
<Image Stretch="Fill" Source="{Binding Converter={StaticResource uriToUIElementConverter},ConverterParameter=ImageDrawing.xaml}"/>
</Grid>