Мне было интересно, если существует любой способ иметь общее представление, такое как EditorView, и прикрепить соответствующую ViewModel. Поскольку все они реализуют IEditorViewModel, у всех есть все необходимое для работы EditorView. В настоящее время для каждого представления я прикрепляю соответствующую ViewModel, используя такое свойство зависимости:
Код: Выделить всё
public sealed partial class ImageEditorView : UserControl
{
public ImageEditorViewModel ImageEditorViewModel
{
get => (ImageEditorViewModel)GetValue(ImageEditorViewModelProperty);
set => SetValue(ImageEditorViewModelProperty, value);
}
public static readonly DependencyProperty ImageEditorViewModelProperty =
DependencyProperty.Register(
nameof(ImageEditorViewModel),
typeof(ImageEditorViewModel),
typeof(ImageEditorView),
new PropertyMetadata(default));
public ImageEditorView(ImageEditorViewModel imageEditorViewModel)
{
this.InitializeComponent();
ImageEditorViewModel = imageEditorViewModel;
}
}
В будущем я, скорее всего, добавлю новые редакторы, поэтому этот подход будет очень удобен: просто создайте ViewModel, реализующую IEditorViewModel, и прикрепите его к существующий общий EditorView.
Как этого добиться?
Примечание. Я использую WinUI3 последняя стабильная версия вместе с CommunityToolkit.MVVM, если это имеет какое-либо значение.
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-winui3
Мобильная версия