WPF 静态属性值更改时,如何触发视图更新数据

解决方案1:通用的静态通知事件

public class DemoViewModel
{
	private static string property1;
	// 定义静态属性
	public static string Property1
	{
		get => property1;
		set
		{
			property1 = value;
			OnStaticPropertyChanged();
		}
	}
	
	// 定义静态属性值变化事件 
	public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;

	private static void OnStaticPropertyChanged([CallerMemberName]string propertyName = null)
	{
		OnStaticPropertyChanged(new PropertyChangedEventArgs(propertyName));
	}
	
	private static void OnStaticPropertyChanged(PropertyChangedEventArgs e)
	{
		StaticPropertyChanged?.Invoke(null, e);
	}
}

解决方案2:指定属性名的通知事件

public class DemoViewModel
{
    private static string property1;
    // 定义静态通知属性
    public static string Property1
    {
        get => property1;
        set
        {
            property1 = value;
            OnProperty1PropertyChanged();
        }
    }

    // 定义静态通知属性 Property1 的属性值更改事件
    // 此静态事件仅对应静态通知属性 Property1
    // 如果,其它静态属性也需要进行通知处理。需要定义对应属性名的 PropertyChanged 事件。
    public static event EventHandler<PropertyChangedEventArgs> Property1PropertyChanged;

    private static void OnProperty1PropertyChanged([CallerMemberName] string propertyName = null)
    {
        OnProperty1PropertyChanged(new PropertyChangedEventArgs(propertyName));
    }

    private static void OnProperty1PropertyChanged(PropertyChangedEventArgs e)
    {
        Property1PropertyChanged?.Invoke(null, e);
    }
}
posted @ 2021-09-08 09:34  2324736194  阅读(841)  评论(0)    收藏  举报