1

私の問題は、ViewModel で「SelectionChanged」イベントを呼び出したいことです。

ComboBox があります (ここでは ListPicker と呼ばれ、電話アプリケーションです):

<tool:ListPicker Name="txt_LZZ" 
    ItemsSource="{Binding ZZR}" SelectedItem="{Binding MySelectedItem}" />

ViewModel の私のプロパティは次のようになります。

    private List<string> _zzr;
    public List<string> ZZR
    {
        get
        {
            _zzr = new List<string>();
            _zzr.Add("Jahr");
            _zzr.Add("Monat");
            _zzr.Add("Woche");
            _zzr.Add("Tag");
            return _zzr;
        }
        set
        {
            _zzr = value;
            RaisePropertyChanged(() => ZZR);
        }
    }

    private string _mySelectedItem;
    public string MySelectedItem
    {
        get
        {
            return _mySelectedItem;
        }
        set
        {
            if (value == _mySelectedItem)
                return;
            _mySelectedItem = value;
            RaisePropertyChanged(() => MySelectedItem);
            GetValues();
        }
    }

プログラムは get メソッドを 1 回だけ呼び出しますが、_mySelectedItem の値は「null」です。私が欲しいのは、コンボボックス (ListPicker) の SelectedItem を変更するときに、ViewModel が GetValues メソッドを呼び出す必要があることです。これは、MySelectedItem のセッターにあります。問題: -> ViewModel がセッターを呼び出さない。なんで?

4

1 に答える 1

1

バインディングのモードを次のように設定してみてくださいTwoWay

<tool:ListPicker Name="txt_LZZ" 
    ItemsSource="{Binding ZZR}" SelectedItem="{Binding MySelectedItem, Mode=TwoWay}" />

また、ゲッターで値コレクションをインスタンス化するのではなく、セッターを非公開にし、ビュー モデル (コンストラクターまたはビュー モデルがアクティブ化されたときなど) のプロパティに値を割り当てます。

于 2013-04-11T09:54:28.970 に答える