Привязать элементы поля со списком к выбранному элементу другого списка - PullRequest
1 голос
/ 18 мая 2011

У меня есть два поля со списком.Первый, Companys имеет коллекцию объектов компании.Каждый объект имеет строковое имя и коллекцию строк:

Вот класс:

public class clsCompany : PropertyChangedBase
{
    public string Name { get; set; }
    public BindableCollection<string> Regions;
    public override string ToString()
    {
        return Name;
    }
}

Вот код.TextBox прекрасно обновляется, когда я выбираю элемент.Но ComboBox, который должен показывать регионы, не:

<ComboBox x:Name="Companys" DisplayMemberPath="Name" Width="100"/>
<ComboBox  x:Name="SelectedCompany_Regions" Width="100"/>
<TextBlock x:Name="SelectedCompany_Name" Width="100" />

Единственный способ заставить 2-й ComboBox работать - это создать новое свойство в моей ViewModel, которое связано с SelectedCompany.Regionsчто у меня не работает?

Ответы [ 2 ]

0 голосов
/ 21 мая 2011

Ваша проблема вызвана отсутствием уведомлений об изменении свойства.При обновлении компании вам также необходимо подать уведомление об изменении свойства для этих компаний Регионы, чтобы регионы ComboBox знали, что их источник также обновлен.Это можно сделать, изменив свойства Companies и SelectedCompany следующим образом:

public BindableCollection<Company> Companys { get; set; }
private Company _selectedCompany;
public Company SelectedCompany
{
    get { return _selectedCompany; }
    set
    {
        _selectedCompany = value;
        NotifyOfPropertyChange(() => SelectedCompany);
        NotifyOfPropertyChange(() => SelectedCompany.Regions);
    }
}
0 голосов
/ 18 мая 2011

Если вы сделаете Companys CollectionView, тогда вы сможете связать второе комбо с Companys.CurrentItem.Regions.

...