2017-08-06 62 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); 
}