2

この例を考えてみましょう。私のビューモデルには、2 つのプロパティがImageありHasImageます。明らかに、HasImageに依存してImageおり、 が更新されるたびに更新する必要がありますImage。これは、以下に示すように、少なくとも 2 つの方法で実行できます。

性能とデザインの両方を考慮すると、どの方法が最適ですか?


解決策 1

public MyViewModel()
{
    PropertyChanged += MyViewModel_PropertyChanged;
}

private void MyViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
    if (e.PropertyName == "Image")
    {
        OnPropertyChanged(() => HasImage);
    }
}

public bool HasImage
{
    get
    {
        return (Image != null);
    }
}

public BitmapSource Image
{
    get
    {
        return this.image;
    }
    set
    {
        if (this.image != value)
        {
            this.image = value;
            OnPropertyChanged(() => Image);
        }
    }
}

解決策 2

public MyViewModel()
{
}

public bool HasImage
{
    get
    {
        return (Image != null);
    }
}

public BitmapSource Image
{
    get
    {
        return this.image;
    }
    set
    {
        if (this.image != value)
        {
            this.image = value;
            OnPropertyChanged(() => Image);
            OnPropertyChanged(() => HasImage);
        }
    }
}
4

1 に答える 1

2

イベント ハンドラーを登録しておらず、その追加のメソッドを呼び出していないため、パフォーマンスは 2 番目の方が優れている必要があります。

デザインに関しては、私は 2 番目の方がよく見かけますが、それが好みです。

ただし、実際には、 PropertyChanged.Fodyのようなものを使用して、それを処理させてください。注意として、それは2番目に行います。

于 2013-06-04T15:11:23.067 に答える