我有以下非常简单的代码,当然有效:
<Image Source="Resources\data_store.png"/>
问题是我现在必须从作为ItemSource给出的对象的属性(“name”)中获取字符串,并且我没有设法绑定它
我尝试了这些但没有工作:
<Image Source=name/>
<Image Source=Path="name"/>
<Image Source=Path=name/>
<Image Source={Path="name"}/>
<Image Source={Path=name}/>
<Image Source={Binding name}/>
我的对象是在c#codebehind中设置的,我认为它不会改变某些东西......
答案 0 :(得分:2)
在后面的代码中,确保将源定义为Property:
public string Name{get;set;}
然后绑定的工作原理如下:
<Image Source="{Binding Name, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}" />
如果要动态更新图像,则需要实现INotifyPropertyChanged并在图像更改时调用PropertyChanged
答案 1 :(得分:1)
当遇到XAML解析器时,它非常聪明:
<Image Source="Resources\data_store.png"/>
它知道Source
属性是ImageSource
并且将使用合适的转换器来加载指定的资源。如果您需要在代码隐藏或通过绑定设置图像源,您需要通过值转换器自己完成。以下值转换器将起到作用:
public classImageUriConverter : IValueConverter
{
publicImageUriConverter()
{
}
public objectConvert(objectvalue, TypetargetType, objectparameter, System.Globalization.CultureInfo culture)
{
Urisource = (Uri)value;
return newBitmapImage(source);
}
public objectConvertBack(objectvalue, TypetargetType, objectparameter, System.Globalization.CultureInfo culture)
{
throw newNotImplementedException();
}
}
由this blog post提供。