2

我正在尝试使用 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”的第一个参数总是为空。

大师,我需要你的帮助。

4

1 回答 1

2

我有同样的问题。

我的错误是绑定的属性是错误的类型。它是字符串应该是一个枚举。

没有构建错误。但是在运行时,我的 (IValueConverter).Convert 方法被传递了 value=null。

发生这种情况的地方-检查绑定...

于 2015-06-26T08:10:46.013 回答