Telerik WPF RadImageEditor.Image不是数据绑定

时间:2017-08-06 12:19:07

标签: c# wpf data-binding telerik

XAML

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <telerik:RadImageEditor
        x:Name="ImageEditor"
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch"
        Image="{Binding RadImage}"
        ScaleFactor="0" />

    <!-- For comparison -->
    <Image Grid.Column="1" Source="{Binding Image}" />
</Grid>

CSharp

private void Show() {
    // download image from url
    Image = new BitmapImage(new Uri("http://www.example.com/image.jpg"));
    RadImage = new RadBitmap(Image);
}

// Properties
public RadBitmap RadImage
{
    get { return _radImage; }
    set { _radImage = value; RaisePropertyChanged(); }
}

public BitmapSource Image
{
    get { return _image; }
    set { _image = value; RaisePropertyChanged(); }
}

我尝试使用RadImageEditor WPF控件以及通过数据绑定显示图像的内容。

<Image />完美地显示了下载的图片,但<telerik:RadImageEditor />没有。

这个控件不支持数据绑定吗?

1 个答案:

答案 0 :(得分:0)

@Clemens给出了一个提示。感谢。

我认为这可能是由于延迟加载造成的,所以我可以解决此问题,如下所示。

private void Show() {
    if (Image != null)
        WeakEventManager<System.Windows.Media.Imaging.BitmapSource, EventArgs>.RemoveHandler(Image, nameof(Image.DownloadCompleted), OnImageOnDownloadCompleted);

    Image = new BitmapImage(new Uri("http://www.example.com/image.jpg"));
    WeakEventManager<System.Windows.Media.Imaging.BitmapSource, EventArgs>.AddHandler(Image, nameof(Image.DownloadCompleted), OnImageOnDownloadCompleted);
}

private void OnImageOnDownloadCompleted(object sender, EventArgs args)
{
    RadImage = new RadBitmap(Image);
}