2

我是 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>
4

1 回答 1

0

您必须INotifyPropertyChangedImageHandler

对于依赖属性:

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属性。

于 2013-01-27T19:24:16.160 回答