数据模板绑定图像刷源
本文关键字:图像 绑定 数据 | 更新日期: 2023-09-27 18:07:20
我将imagebrush source绑定到xaml中的数据模板。数据模板是——>
<DataTemplate x:Key="UserGridListTemplate">
<Grid Height="140" Width="155">
<Grid.Background>
<ImageBrush ImageSource="{Binding imagePath}"/>
</Grid.Background>
</Grid>
</DataTemplate>
和xaml——>
<ListBoxItem ContentTemplate="{StaticResource UserGridListTemplate}" >
<local:MultiLineItem ImagePath="/ShareItMobileApp;component/Images/facebook-avatar(1).png"/>
</ListBoxItem>
但是发生异常 age_parser_bad_property_value [Line: 3 Position: 33]
有谁能帮我一下吗?你得到这个错误的原因是因为ImageBrush
不是来自FrameworkElement
,这意味着你不能像那样直接绑定数据。你可以创建一个转换器,将你的imagePath
转换成一个ImageBrush,并设置ImageBrush作为背景网格的Background
属性。
首先你需要创建一个转换器将路径字符串转换成ImageBrush。
public class ImagePathConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter)
{
if(value == null) return null;
Uri uri = new Uri(value.ToString(), UriKind.RelativeOrAbsolute);
ImageBrush ib = new ImageBrush();
ib.ImageSource = new BitmapImage(uri);
return ib;
}
public object ConvertBack(object value, Type targetType, object parameter)
{
throw new NotImplementedException();
}
}
你可以在你的网格的背景绑定中使用这个转换器(在你用ImgPathConverter
键将它作为资源添加之后)。
<DataTemplate x:Key="UserGridListTemplate">
<Grid Height="140" Width="155"
Background={Binding imagePath, Converter={StaticResource ImgPathConverter}}/>
</DataTemplate>