2017-08-06 57 views
0

XAMLTelerik的WPF RadImageEditor.Image没有数据绑定

<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 />没有。

此控件是否支持数据绑定?

+0

只是一个猜测,但你可以尝试以确保'Image'已经传递到RadBitmap构造函数时,或者由的BitmapImage的CacheOption设置为'BitmapCacheOption.OnLoad'加载,或通过使用合适的' BitmapFrame.Create()'方法。 – Clemens

+0

@Clemens //谢谢你帮助我很多。 – Youngjae

回答

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); 
}