Связывающие свойства между моделями представления - PullRequest
2 голосов
/ 20 марта 2020

Допустим, у меня есть два вида: FileList и Editor. Они обе имеют свои собственные модели представлений, связанные с помощью DependencyProperty. Модели представлений выглядят примерно так:

public class FileVM : INotifyPropertyChanged
{
    public string FileName { get; set; }
}

public class FileListVM : INotifyPropertyChanged
{
    public ObservableCollection<FileVM> Files { get; set; }
    public FileVM SelectedFile { get; set; }
}

public public class EditorVM : INotifyPropertyChanged
{
    string FileName { get; set; }
}

Представьте, что они правильно реализуют INotifyPropertyChanged.

Теперь я не хочу, чтобы FileListVM и EditorVM знали друг о друге , Они могут так же легко существовать независимо. Но в одном случае я хотел бы связать FileListVM.SelectedFile.FileName с EditorVM.FileName. Всякий раз, когда выбранный файл или имя файла изменяется, имя файла в редакторе также должно изменяться. И всякий раз, когда редактор изменяет имя файла в редакторе, так должно и имя выбранного файла.

Теперь вот мой вопрос: как я могу сделать это чисто? Я предполагаю, что решение лежит где-то в их родительской модели представления (например, MainVM), так как эта модель представления знает о связи между двумя дочерними моделями представления. Но я не уверен, смогу ли я соединить их через xaml, и я хотел бы избежать записи обработчиков событий, измененных свойством, если это возможно.

1 Ответ

0 голосов
/ 21 марта 2020

Пожалуйста, посмотрите на: Связь между моделями представления в MVVM

Я советую использовать фреймворки MVVM, такие как Galasoft, потому что они имеют полезную функциональность и часто облегчают жизнь с MVVM;)

Если вам не нравится их использование, вы можете добавить событие SelectedFileChanged в одну виртуальную машину и подписаться на нее от другой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...