MVVM 选择已更改组合框不调用"设置"



我的问题是我想在我的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方法一次,而_mySelectedItem的值为'null'。我想要的是,当我改变SelectedItem在我的组合框(ListPicker), ViewModel必须调用方法GetValues,这是在我的setter为MySelectedItem。问题:-> ViewModel不调用setter。为什么?

尝试将绑定模式设置为TwoWay:

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

我也不会在getter中实例化你的值集合,而是将setter设置为私有,并在视图模型中为属性分配一个值(例如构造函数或视图模型激活时)

相关内容

  • 没有找到相关文章

最新更新