MVVMLight Выбор нескольких списков - PullRequest
1 голос
/ 28 июля 2010

У меня есть ItemsContol, привязанный к модели Country - которая выглядит следующим образом.


Страна
--int Id
--string Name
- Список округов


В DataTemplate ItemsControl есть Listbox, который привязан к свойству Counties.

Итак, я хочу, чтобы в любой момент списка был выбран только один элемент.

Например: У меня выбран элемент в первом списке, и я щелкаю элемент во втором списке, тогда в первом списке не должно быть выбранных элементов.

Есть идеи ??

Ответы [ 2 ]

0 голосов
/ 29 июля 2010

Просто для справки вот решение, которое я использую - оно находится в 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;
            });
    }

Надеюсь, это кому-нибудь поможет:)

0 голосов
/ 28 июля 2010

Добавьте свойство SelectedCounty к вашему объекту Country.Затем вы можете привязать SelectedItem вашего ListBox к этому свойству.Затем в коде вручную установите все остальные на ноль.Примерно так

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