Передача одной переменной в несколько пользовательских элементов управления - WPF - PullRequest
0 голосов
/ 28 июня 2018

У меня есть MainWindow и 7 пользовательских элементов управления с их собственными виртуальными машинами.

Мой MainWindow имеет две строки (электронная почта и язык), которые мне нужны во всех 7 пользовательских элементах управления. Я нашел решение (простое Dependency Properties для каждого UserControl), но я не хочу делать это 7 раз для каждого UserControl, потому что мне это не подходит. Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 28 июня 2018

Если вы используете класс ViewModelBase с интерфейсом INotifyPropertyChanged (обычно это стандартно в приложении MVVM), просто добавьте здесь две строки. Все последующие ViewModels унаследуют эти свойства, что устраняет необходимость реализации двух свойств в каждой из ваших ViewModels.

public class ViewModelBase : INotifyPropertyChanged
{

    public event PropertyChangedEventHandler PropertyChanged;

    [NotifyPropertyChangedInvocator]
    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

    public string Email { get; set; }
    public string Language { get; set; }
}

Если вы пометите класс и свойства как абстрактные, это заставит производные классы переопределить два свойства.

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