我有一个MainWindow
和7个带有自己的VM的UserControl。
我的MainWindow
有两个我所有7个UserControl中都需要的字符串(电子邮件和语言)。我找到了一个解决方案(每个Dependency Properties
都使用简单的UserControl
),但我不想为每个UserControl
做7次,因为这似乎不适合我。有更好的方法吗?
答案 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; }
}
如果将类和属性标记为抽象,这将强制派生类覆盖这两个属性。