MVVMLight多列表框选择

时间:2010-07-28 15:55:23

标签: silverlight mvvm-light

我有一个ItemsContol绑定到Country模型 - 看起来像这样。


国家
--int Id
--string名称
- 列表县


在ItemsControl的DataTemplate中有一个Listbox - 它绑定到Counties属性。

所以我想要的是任何时候只能选择任何一个列表框中的一个项目。

例如: 我在第一个列表框中选择了一个项目,然后单击第二个列表框中的项目,然后第一个列表框中没有任何选定的项目。

任何想法??

2 个答案:

答案 0 :(得分:0)

将SelectedCounty属性添加到Country对象。然后,您可以将SelectedItem上的ListBox绑定到该媒体资源。然后在代码中手动将所有其他的设置为null。像这样的东西

Country.OnPropertyChanged += (s,e) => 
    {
         if(e.PropertyName == "SelectedCounty")
         {
             foreach(Country country in MyCountries)
                 if(country != sender)
                     country.SelectedCounty = null;
         }
    }

答案 1 :(得分:0)

仅供参考,这是我正在使用的解决方案 - 它位于CountryViewModel

    private CountyModel _selectedcounty;
    public CountyModel SelectedCounty
    {
        get { return _selectedcounty; }
        set 
        { 
            _selectedcounty = value; 
            RaisePropertyChanged("SelectedCounty");

            if (value != null)
            {
                if (CountySelectedEvent != null)
                    CountySelectedEvent(value, EventArgs.Empty);

                Messenger.Default.Send<CountyModel>(value, "SelectedCounty");
            }
        }
    }

    public CountryViewModel()
    {
        Counties = new ObservableCollection<CountyModel>();

        Messenger.Default.Register<CountyModel>(this, "SelectedCounty",
            msg =>
            {
                if(msg != this.SelectedCounty && msg != null)
                    this.SelectedCounty = null;
            });
    }

希望它可以帮助某人:)