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プロパティを更新するたびに、画像コントロールに新しい画像が表示されます。

私はいくつかの方法を試しましたが、どれもこの目標を達成しませんでした。以下は私の失敗した試みの1つを示しています。

<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

どちらかを実装する必要があり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ただし、それを実装するには、属性を削除する必要がありました。

于 2013-01-27T19:24:16.160 に答える