我正在尝试使用CroppedBitmap。
图像的路径只在运行时才知道,所以我想通过Binding设置CroppedBitomap.Source。
我发现CroppedBitmap及其Source存在已知问题。见:WPF - using CroppedBitmap in DataTemplate
这些链接建议使用转换器。 我试过这样做,但我总是在Convert函数中得到null值。
这是一个xaml视图:
<UserControl>
<UserControl.Resources>
<local:ImageConverter x:Key="imageConverter" />
</UserControl.Resources>
<StackPanel>
<Label x:Name="testLabel" Content="{Binding Path=Img}"/>
<Button x:Name="testButton" Content="{Binding ElementName=testLabel, Path=Content}"/>
<Image Stretch="None">
<Image.Source>
<CroppedBitmap Source="{Binding ElementName=testLabel, Path=Content, Converter={StaticResource imageConverter}}" SourceRect="10,10,50,50" />
</Image.Source>
</Image>
</StackPanel>
</UserControl>
名为“testLabel”的标签显示属性Img中的值没有问题。 “testButton”按钮显示的值与“testLabel”相同。
这是类imageConverter:
public class ImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
FormatConvertedBitmap fcb = new FormatConvertedBitmap();
fcb.BeginInit();
fcb.Source = new BitmapImage(new Uri((string)value));
fcb.EndInit();
return fcb;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException("Cannot convert back");
}
}
但是当我调试函数Convert时,我看到名为“value”的第一个参数总是为空。
大师,我需要你的帮助。
答案 0 :(得分:1)
我遇到了同样的问题。
我的错误是绑定的属性是错误的类型。这是字符串应该是一个枚举。
没有构建错误。 但在运行时我的(IValueConverter).Convert方法传递的值= null。
发生这种情况 - 检查绑定......