有关WPF的一些事

RaisePropertyChanged和OnPropertyChanged的区别

WPF中,数据绑定是实现MVVM模式的关键。在数据绑定的过程中,我们需要在数据发生变化时及时通知UI更新。为了实现这个功能,WPF提供了两个重要的方法:WPFRaisePropertyChanged和OnPropertyChanged。

WPFRaisePropertyChanged是一种手动触发属性更改事件的方法。当属性的值发生变化时,我们需要调用此方法通知UI更新。在ViewModel中使用此方法时,我们需要传递属性的名称作为参数。例如:

private string _name;
public string Name
{
    get { return _name; }
    set
    {
        if (_name != value)
        {
            _name = value;
            WPFRaisePropertyChanged("Name");
        }
    }
}

OnPropertyChanged是一种基于委托的自动触发属性更改事件的方法。当属性的值发生变化时,我们可以通过定义一个PropertyChangedEventHandler委托类型的事件来自动触发属性更改事件。例如:

public event PropertyChangedEventHandler PropertyChanged;
private string _name;
public string Name
{
    get { return _name; }
    set
    {
        if (_name != value)
        {
            _name = value;
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Name"));
        }
    }
}

在使用OnPropertyChanged时,我们需要先定义一个PropertyChangedEventHandler委托类型的事件,并在属性发生变化时调用该事件即可。

总的来说,WPFRaisePropertyChanged是一种手动触发属性更改事件的方法,而OnPropertyChanged是一种基于委托的自动触发属性更改事件的方法。在MVVM模式中,我们通常使用OnPropertyChanged来实现属性更改事件的自动触发。

属性绑定bool值区反

在WPF的绑定中,有时会用到属性值为True时不选中,或者不启用,这时就需要用到Bool取反.

我们可以使用Converter来实现Bool值的取反。下面是一个简单的例子:

首先,在XAML中定义一个BooleanToInverseBooleanConverter:


    


然后,在绑定时使用该转换器:



最后,在C#中实现BooleanToInverseBooleanConverter:

public class BooleanToInverseBooleanConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is bool b)
        {
            return !b;
        }
        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is bool b)
        {
            return !b;
        }
        return value;
    }
}

这个转换器将bool值转换为相反的bool值。在上面的例子中,当IsSelected属性为true时,CheckBox将处于选中状态,而当IsSelected属性为false时,CheckBox将处于未选中状态。

本文介绍了WPF中数据绑定的两个重要方法:WPFRaisePropertyChanged和OnPropertyChanged。前者是手动触发属性更改事件的方法,后者是基于委托的自动触发属性更改事件的方法。此外,本文还介绍了如何使用转换器实现bool值的取反,以及在WPF绑定中如何使用该转换器。需要的小伙伴学起来吧,有任何疑问可以给我留言!~

你可能感兴趣的:(C#,wpf,c#,开发语言)