我在窗口中有一个图像
<Image Source="{Binding Path=MYImage, Converter={StaticResource ResourceKey=imageConverter}}" />
我也尝试过使用值转换器:
public class ImageConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
try
{
return new BitmapImage(new Uri((string)value));
}
catch
{
return new BitmapImage();
}
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
并为其创建了依赖项属性。
public string MYImage
{
get { return (string)GetValue(MYImageProperty); }
set { SetValue(MYImageProperty, value); }
}
public static readonly DependencyProperty MYImageProperty=DependencyProperty.Register("PickerImage",typeof(string),typeof(MYClass),new PropertyMetadata("/MYProject;component/pic.png"));
但是当我使用它时,不要显示图像!!!
答案 0 :(得分:0)
您无需转换来源。
你可以绑定一个这样的字符串:
"/My.Namespace;component/Resources/thatsMyImage.png"
XAML:
<Image Source="{Binding Path=MYImage}" />
答案 1 :(得分:0)
这就是我在申请中解决问题的方法。
我的申请结构是:
所有MyApplication
CoreSolution
-ProjectA1
-resources
- 图像
warning.ico (Build action set to Resource)
information.ico (Build action set to Resource)
error.ico (Build action set to Resource)
+ ProjectA2
PersonDatabaseSolution
+ ProjectB1
+ ProjectB2
我在CoreSolution的ProjectA1项目中添加了图像(实际图像而非链接)。我没有改变任何图像的构建动作。编译项目以获取ProjectA1.dll。
在ProjectB2的PersonDatabaseSolution中,我使用以下代码在代码中引用error.ico:
private ImageSource _myImage
public ImageSource MyImage
{
get
{
if(_myImage==null)
{
uriLoc=new Uri("pack://application:,,,/CoreSolution.ProjectA1;component/Resources/Images/error.ico", UriKInd.Absolute);
BitmapImage bmImage = new BitmapImage();
bmImage.BeginInit();
bmImage.UriSource = uriLoc;
bmImage.EndInit();
_myImage=bmImage;
}
return _myImage;
}
}
MyImage属性绑定在xaml:
中 <Image Source="{Binding Path=MyImage}"/>
到目前为止,这对我有用。希望它也有助于其他人。
谢谢, RDV