我正在尝试使用CroppedBitmap。
图像的路径仅在运行时才知道,因此我想通过Binding设置CroppedBitomap.Source。
我发现CroppedBitmap及其源代码存在一个已知问题。参见:WPF - using CroppedBitmap in DataTemplate
这些链接建议使用转换器。
我尝试这样做,但是我总是在Convert函数中得到空值。
这是一个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”的第一个参数始终为null。
大师,我需要你的帮助。
最佳答案
我有同样的问题。
我的错误是绑定的Property是错误的类型。字符串应该是枚举。
没有构建错误。
但是在运行时,我的(IValueConverter).Convert方法传递了值= null。
发生这种情况-检查绑定...