数据模板绑定图像刷源

本文关键字:图像 绑定 数据 | 更新日期: 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>