我正在尝试使用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。

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

10-07 18:58