我正在尝试使用 CroppedBitmap。
图像的路径只有在运行时才知道,所以我想通过 Binding 设置 CroppedBitomap.Source。
我发现 CroppedBitmap 及其来源存在一个已知问题。请参阅:WPF - 在 DataTemplate 中使用 CroppedBitmap
这些链接建议使用转换器。我试过这样做,但我总是在 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”的第一个参数总是为空。
大师,我需要你的帮助。