0

SelectedItem がビジネス オブジェクトのプロパティにバインドされているコンボボックスがあります。通常は問題なく動作します。ただし、オブジェクトのプロパティ セッターには、無効と見なされる新しい値を時折「キャンセル」するロジックがあります。これは静かな方法で行われます。つまり、例外がスローされず、プロパティ値だけが変更されません。このような状況では、コンボボックスの SelectedItem を前の選択に戻してほしいと思います。技術的には、新しい選択が基礎となるプロパティに伝達されなかったからです。現在、コンボボックスは新しい選択に配置されたままになっていますが、これは、基礎となるプロパティの真の値ではないため、誤解を招く可能性があります。

コンボボックスに常にプロパティの真の値が表示されるようにするにはどうすればよいですか?

4

2 に答える 2

0

NotifyPropertyChanged を呼び出す必要があります

private enum1 e1 = enum1.val1;

public enum1 E1
{
    get { return e1 } 
    set 
    {
        if (e1 == value) return;
        if (OK(value)) e1 = value;
        NotifyPropertyChanged(E1);
    }
}
于 2013-07-01T20:34:32.227 に答える
0

掘り下げた後、私はこれに出くわしました:

http://codebetter.com/jameskovacs/2011/04/28/the-case-of-the-confused-combobox-a-wpfmvvm-bedtime-story/

コンボボックスをサブクラス化し、選択が変更されたときにターゲットを強制的に更新するという解決策は私のマシンで機能しますが、そのサイトのコメンテーターは、これでも防弾ではないと示唆しています。いくつかの Web サイトでは、この点で wpf コンボボックスが風変わりであると述べています。どうやら MS は、バインドされたプロパティの設定中にコンボボックスにそれ以上の通知を無視させるという疑わしい決定を下したようです。これは、このような状況に遭遇するまで意味があります。それは少なくとも他のWPF専門家の意見ですが、私は間違いなくそうではありません:)

于 2013-07-01T20:53:34.770 に答える