将一个变量传递给多个UserControls-WPF

时间:2018-06-28 07:01:31

标签: c# wpf mvvm

我有一个MainWindow和7个带有自己的VM的UserControl。

我的MainWindow有两个我所有7个UserControl中都需要的字符串(电子邮件和语言)。我找到了一个解决方案(每个Dependency Properties都使用简单的UserControl),但我不想为每个UserControl做7次,因为这似乎不适合我。有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

如果您通过INotifyPropertyChanged接口(通常是MVVM应用程序中的标准接口)使用ViewModelBase类,则只需在此处添加两个字符串即可。以后的所有ViewModel都将继承这些属性,从而无需在每个ViewModel中实现这两个属性。

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; }
}

如果将类和属性标记为抽象,这将强制派生类覆盖这两个属性。