2

我正在将 imagebrush 源绑定到我在 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>

但发生异常 AG_E_PARSER_BAD_PROPERTY_VALUE [行:3 位置:33]

谁能帮我解决这个问题???

4

1 回答 1

3

您收到该错误的原因是因为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();
    }
}

然后,您可以在 Grid 的后台绑定上使用该转换器(在您使用 key 将其添加为资源之后ImgPathConverter)。

<DataTemplate x:Key="UserGridListTemplate">
   <Grid Height="140" Width="155"
     Background={Binding imagePath, Converter={StaticResource ImgPathConverter}}/>
</DataTemplate>
于 2013-04-04T15:01:34.947 回答