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 />
没有。
这个控件不支持数据绑定吗?
答案 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);
}