【发布时间】:2016-11-16 13:13:56
【问题描述】:
考虑一个包含大量输入字段的 WPF 对话,这些输入字段绑定到视图模型中的属性。例如
...
<TextBox Text="{Binding FirstName}">
...
public string FirstName {
get { return mFirstName; }
set {
if (mFirstName == value) return;
mFirstName = value;
OnPropertyChanged("FirstName");
}
}
由于有数十个这样的字段,我想尽量减少要编写的样板 C# 代码。我有什么选择?
【问题讨论】:
-
不需要传递名称,使用 void OnPropertyChanged ( [CallerMemberName] String propertyName = null )。 Imo 有一些框架可以用属性解决其余的样板文件,但我已经在不久前研究过它。另一种选择是使用带有通用代码的 Dictionary
包装器,用于获取/设置任何值(也使用 CallerMemberName 技巧)并引发事件。然后你只有 get{ return props.Get<int>() }和set{ props.Set(value); } -
您还可以使用适当的工具,例如 Resharper,它可以为您生成样板代码(或至少使其更容易)。
标签: c# wpf data-binding