首页 > 解决方案 > In WPF, is there a way to bind properties without requiring a backing field?

问题描述

In the example below, the backing field is not performing any type of calculation and is simply just returning a value. Is there a way to write this without requiring a backing field? I'm not really seeing the purpose of having one in this instance. If my XAML is binding directly to Age, I don't really know why I also need _age.

private int _age;
public int Age
{
    get {return _age; }
    set
    {
        _age = value;
        OnPropertyChanged("Age");
    }
}

private void ButtonClickIncrease(object sender, RoutedEventArgs e)
{
    Age++;
}
private void ButtonClickDecrease(object sender, RoutedEventArgs e)
{
    Age--;
}

标签: c#wpfxaml

解决方案


尽管支持字段不执行任何计算,但它用于存储Age属性的值。您需要它来返回 getter 中的值并在 setter 中分配新值。如果你没有它,getter 会返回什么?二传手会存储什么?

也许您习惯了自动属性,您似乎不使用支持字段。当您的 getter 和 setter 只返回和分配属性时,自动属性是一种简写。但是,因为您正在执行其他操作(即OnPropertyChanged("Age")),所以您不能使用自动属性,因此必须使用支持字段对 getter 和 setter 进行手动编码。请参阅自动实现的属性


推荐阅读