与INotifyPropertyChanged的实现类似,静态属性更改通知仅在触发
StaticPropertyChanged事件时使用正确的属性名称时才起作用。
使用属性名称,而不是后备字段的名称:
public static string ErrorMessgae{ get { return errorMessage; } set { errorMessage = value; NotifyStaticPropertyChanged("ErrorMessgae"); // not "errorMessage" }}当然,您还应该修复拼写错误的属性名称:
public static string ErrorMessage{ get { return errorMessage; } set { errorMessage = value; NotifyStaticPropertyChanged("ErrorMessage"); }}绑定应如下所示:
Text="{Binding Path=(error:InteractionData.ErrorMessage)}"有关静态属性更改通知的详细信息,请参见此博客文章。
您也可以避免使用以下代码来编写属性名称
CallerMemberNameAttribute:
using System.Runtime.CompilerServices;...public static event PropertyChangedEventHandler StaticPropertyChanged;private static void NotifyStaticPropertyChanged( [CallerMemberName] string propertyName = null){ StaticPropertyChanged?.Invoke(null, new PropertyChangedEventArgs(propertyName));}现在,您可以在不显式指定属性名称的情况下调用该方法:
NotifyStaticPropertyChanged();



