WPF图像控制源绑定

时间:2013-01-27 19:14:41

标签: c# wpf image binding properties

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

1 个答案:

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