我是WPF和C#的新手,我尝试实现以下功能,但经过多次尝试后失败了。任何人都可以帮助我吗?
我有一个图像控件:
<Image Grid.Row="1" x:Name="ImageEditor" Stretch="Fill" StretchDirection="Both"/>
我想将此图像控件的源绑定到另一个类的静态属性(ImageHandler
)
class ImageHandler
{
public static BitmapImage ImageToDisplay { get; set; }
public ImageHandler(){}
.... //other codes
}
因此,每当我在ImageHandler
课程中执行某些操作并更新ImageToDisplay
属性时,我的图像控件都会显示新图像。
我尝试了几种方法,但都没有达到这个目标。以下显示了我失败的尝试之一。
<Window.Resources>
<local:ImageHandler x:Key="ImageHandler"></local:ImageHandler>
</Window.Resources>
<Image Grid.Row="1" x:Name="ImageEditor" Stretch="Fill" StretchDirection="Both"
Source="{Binding Source={StaticResource ResourceKey=ImageHandler},
Path=ImageToDisplay,Mode=TwoWay}">
</Image>
答案 0 :(得分:0)
您必须在INotifyPropertyChanged
ImageHandler
对于依赖属性:
class ImageHandler : INotifyPropertyChanged
{
private BitmapImage imageToDisplay;
public BitmapImage ImageToDisplay
{
get { return imageToDisplay; }
set
{
if (imageToDisplay != value)
{
imageToDisplay = value;
OnPropertyChanged("ImageToDisplay");
}
}
}
public ImageHandler() { }
// .... Other codes
#region INotifyPropertyChanged implementation
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
但是,要实现它,我必须删除static
属性。