c# - 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--;
}
解决方案
尽管支持字段不执行任何计算,但它用于存储Age
属性的值。您需要它来返回 getter 中的值并在 setter 中分配新值。如果你没有它,getter 会返回什么?二传手会存储什么?
也许您习惯了自动属性,您似乎不使用支持字段。当您的 getter 和 setter 只返回和分配属性时,自动属性是一种简写。但是,因为您正在执行其他操作(即OnPropertyChanged("Age")
),所以您不能使用自动属性,因此必须使用支持字段对 getter 和 setter 进行手动编码。请参阅自动实现的属性。
推荐阅读
- sql - 替换结果 Oracle SQL 开发人员的字符
- python - Pandas - 在整个数据框中搜索特定文本
- java - Java 验证输入值
- ios - 如何从字符串中删除表情符号 - ios?
- android - 如何用 Dagger 注入 DialogFragment?
- ssis-2012 - 无效的 SQL 语句;预期 DELETE、INSERT、PROCEDURE、SELECT 或 UPDATE?
- javascript - 将 Cordova 版本 9.0.0 降级到 8.1.2 不起作用
- python - Py Spark No 这样的文件或目录问题
- c# - 无法将类型为“Newtonsoft.Json.Linq.JObject”的对象转换为类型“System.Collections.Generic.Dictionary`2[System.String,System.Object]”
- mysql - API 一次应该只返回 n 行