У меня есть следующие модели:
public class Profile
{
public string name { get; set; }
public Member casemanager { get; set; }
public Member assistant { get; set; }
}
public class Member
{
public int Id { get; set; }
public int Type{ get; set; }
public string Name { get; set; }
}
В моей ViewModel у меня есть следующие объекты:
- именованные профили
ObservableCollection<Profile>
, которые заполняются из базы данных; - a SelectedProfile типа Profile, конечно;
- Два списка членов с именами ListCaseManagers и ListAssistants, которые заполняются из БД.
Каждый из объектов реализует NotifyOfPropertyChange
метод из Caliburn.Micro и устанавливаются со свойством и вспомогательным полем.
Представление:
<StackPanel>
<ListView ItemsSource="{Binding Profiles}" SelectedItem="{Binding SelectedProfile}" DisplayMemberPath="name" SelectionMode="Single" />
<ComboBox ItemsSource="{Binding ListCaseManagers}" SelectedItem="{Binding SelectedProfile.casemanager }" IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Name"/>
<ComboBox ItemsSource="{Binding ListAssistants}" SelectedItem="{Binding SelectedProfile.assistant}" IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Name"/>
</StackPanel>
В этом XAML я думал, что SelectedItem каждого ComboBox будет привязываться непосредственно к менеджеру / помощнику SelectedProfile, меняясь каждый раз, когда я изменяю SelectedProfile с помощью ListView, но кажется, что элемент в выпадающем списке не выделяется, хотя SelectedProfile.casemanager и SelectedProfile.assistant не равны NULL.
Чего мне не хватает? Есть ли простой способ использования соглашений с Caliburn.Micro?