это зависит от того, насколько сложным является внедрение UserControl в среду.Если вы думаете, что много и много времени нужно создавать логику модели представления для вашего пользовательского элемента управления снова и снова (что также является очень хорошим источником ошибок), вам следует инкапсулировать логику в единую модель представления для вашего элемента управления.Если пользовательский элемент управления будет, например, ListItem , я обычно предлагаю вам создать собственную модель представления для элемента управления.
Инфраструктура будет чем:
Общееviewmodel для вашего экрана WPF, который содержит экземпляры viewmodels для ваших пользовательских контролей.Это DataContext экрана будет общей моделью представления. DataContext пользовательских элементов управления будет Binding с PropertyPath модели представления пользовательского элемента управления в вашей общей модели представления.Например:
На экране WPF:
<ListBox DataContext="{Binding}" ItemsSource="{Binding Path=ItemList}">
<ListBox.ItemTemplate>
<yourControls:YourUserControl />
</ListBox.ItemTemplate>
</ListBox>
В общей модели представления:
public class ScreenViewModel : INotifyPropertyChanged
{
private ObservableCollection<YourUserControlViewModel> _itemList =
new ObservableCollection<YourUserControlViewModel>();
public ObservableCollection<YourUserControlViewModel> ItemList
{
get { return _itemList; }
set { _itemList = value; }
}
}
Это автоматически сгенерирует пользовательский элемент управления для каждой модели представления в ItemListВаша модель общего вида.