, поскольку мой заголовок соответствует модным словам, я надеюсь, что получу много ответов на мой вопрос или указатели в правильном направлении.
Хорошо, я обычно использую ViewModel, который содержит список ViewModels.
public class MasterViewModel
{
public ObservableCollection<DetailViewModel> DetailViewModels { get; set; }
public DetailViewModel Detail { get; set; }
}
<ItemsControl ItemsSource="{Binding DetailViewModels}">
<ItemsControl>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate>
<views:DetailsView />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Имея это в виду, теперь я перейду к моим вопросам. Я прочитал много хорошего о MEF, а также увидел образец приборной панели Glenn Block, но это не помогло мне достаточно.
То, что я хочу сделать, это sidbar (например, боковая панель windows).
Боковая панель = StackPanel
ListItems = Гаджет
Но я хочу это в стиле MVVM
ОК, у меня есть что-то вроде контракта
IGadget
Я реализовал пользовательский экспорт.
[ExportGadget(GadgetType = GadgetTypes.News)]
У меня есть NewsGadgetView.xaml (который реализует IGadget), и он импортирует NewsGadgetViewModel, а также делает себя доступным как ExportGadget.
пока все хорошо. С этим я могу создать набор гаджетов.
Тогда у меня есть мой SidbarView.xaml, который импортирует sidebarViewModel.
и теперь я заблудился ...
Я подумал о чем-то вроде GadgetFactory, который использует PartCreator для создания моих гаджетов.
но это будет сидеть в моем SidebarView.xaml
Но я хочу контролировать свои гаджеты, чтобы добавлять и удалять их с боковой панели.
Итак, я подумал о чем-то вроде ObserveableCollection ...
Который я связываю с
GadgetHost - это Grid, который будет динамически загружать гаджет ....
Так как мне создать свою боковую панель, содержащую различные гаджеты, не зная, какие гаджеты доступны, и иметь ViewModel для боковой панели, а также для каждого гаджета? ...
Спасибо за любую помощь ....