我在ImageBrush中有一个ImageSource,它会根据我的数据动态改变。
问题是,我无法直接访问ImageBrush的名称,因为它在DataTemplate中。我知道这是个坏主意,因为在UI中存储数据是一个坏习惯。
如果有人知道如何使用Image上的数据绑定解决这个问题,我真的很感激。 谢谢!
<DataTemplate>
<StackPanel Width="250" Height="180" VerticalAlignment="Bottom">
<StackPanel.Background>
<ImageBrush ImageSource="{Binding ???}"/>
</StackPanel.Background>
........
</StackPanel>
</DataTemplate>
答案 0 :(得分:2)
您可以创建一个将路径转换为图像的转换器:
public sealed 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();
}
}
然后在XAML中:
< Image Source="{Binding Path=ImagePath, Converter={StaticResource ImageConverter}}" />
答案 1 :(得分:0)
试试这个:
<Image>
<Image.Source>
<BitmapImage UriSource=”{Binding ImagePath}” />
</Image.Source>
</Image>
答案 2 :(得分:0)
为什么不使用属性并将控件绑定到属性!!! 您可以将图像的路径设置为属性,然后将元素绑定到属性
答案 3 :(得分:0)
您需要在BaseUri
new Uri(BaseUri, Url)
public sealed class ImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
try
{
return new BitmapImage(new Uri(BaseUri, (string)value));
}
catch
{
return new BitmapImage();
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
同时在XAML代码中指定转换器
<Page:Resources>
<local:ImageConverter x:Key="imageConverter"/>
</Page:Resources>
转换器位于Image
<Image Source="{Binding Path=ImagePath, Converter={StaticResource imageConverter}}" />