Использование одного и того же представления для разных моделей представления в WinUI3C#

Место общения программистов C#
Ответить
Anonymous
 Использование одного и того же представления для разных моделей представления в WinUI3

Сообщение Anonymous »

В проекте WinUI3 у меня есть 3 представления IconEditorView, ColorEditorView и ImageEditorView, каждое из которых имеет соответствующую модель представления IconEditorViewModel, ColorEditorViewModel и ImageEditorViewModel. . Представления практически одинаковы, единственными различиями являются несколько меток, которые в любом случае привязаны к ViewModel (конкретные элементы пользовательского интерфейса находятся в независимых элементах управления пользователя внутри представлений).
Мне было интересно, если существует любой способ иметь общее представление, такое как 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, но это, конечно, не сработало, поскольку мне нужна была привязка данных для обновления нескольких индикаторов рабочего процесса от имени пользователя. взаимодействует с представлением.
В будущем я, скорее всего, добавлю новые редакторы, поэтому этот подход будет очень удобен: просто создайте ViewModel, реализующую IEditorViewModel, и прикрепите его к экземпляр существующего общего EditorView.
Как этого добиться?
Примечание: Я' Я использую последнюю стабильную версию WinUI3 вместе с CommunityToolkit.MVVM, если это каким-либо образом актуально.
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-winui3
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»