Если вы выберете подход здесь , тогда вы можете установить свойство для модели вида выбранного элемента.В зависимости от отношения между DataStoreType
и DataStoreEntry
вы можете использовать одно и то же свойство в модели представления для хранения базового класса или интерфейса.
Внутри свойства вы можете отреагировать, установив коллекцию, которой управляет ваш список.привязан к ...
VM
public IDataStore SelectedStore
{
get { return _store; }
set
{
_store = value;
RaisePropertyChanged("SelectedStore");
RaisePropertyChanged("ListItems");
}
}
public IEnumerbale<string> ListItems
{
get
{
if(_store == null)
return Enumerable.Empty<string>();
else
return _store.Items;
}
}
XAML
<ListBox ItemsSource="{Binding ListItems}" />
Поскольку RaisePropertyChanged("ListItems");
в установщике для выбранного элемента в древовидной структуре,ListBox
(при условии, что вы используете что-то подобное) обновится с новыми данными.В этом дизайне я извлекаю список элементов из DataStoreTypeViewModel
или DataStoreEntryViewModel
, который лучше инкапсулируется, если данные изменяются в зависимости от типа модели представления.Просто попросите их реализовать интерфейс, подобный IDataStore
.
Просто настройте его в соответствии с вашими потребностями.