【问题标题】:How to reduce boilerplate code for numerous combobox.selecteditem properties如何减少大量 combobox.selecteditem 属性的样板代码
【发布时间】:2020-06-12 15:39:41
【问题描述】:

我有一个包含大量 ComboBox 控件的视图,可以使用是/否选项填充这些控件。

我用它把一些数据输入到数据库中。

目前,要绑定所有这些组合框选定项,我必须在我的 ViewModel 中为每个组合框 SelectedItem 执行此样板代码:

private string _YesNo1;
public string YesNo1
{
    get { return _YesNo1; }
    set
    {
        _YesNo1= value;
        RaisePropertyChanged("YesNo1");
    }
}

在我看来,我需要执行此代码大约 15 次以上,并在 XAML 中绑定每一个。

有没有更好的方法可以做到这一点,以便我可以分别绑定每个组合框SelectedItem,但避免重复代码?

【问题讨论】:

  • 这听起来更适合CodeReview,因为它是您想要改进的工作代码。
  • 小心“太聪明”的解决方案(比如循环多个控件)。虽然一开始可能会为您节省一点时间,但您最终可能会遇到一些既难以理解又难以改变的事情......
  • @Noceo 一个很好的提示。通常我会很乐意编写更长但更清晰的代码,但在这种情况下,这只是很多重复。

标签: c# mvvm


【解决方案1】:

所以选择很少。

  1. 创建一个将实现INotifyPropertyChanged (https://stackoverflow.com/a/36151255/8212196) 的基类。它会减少一点代码。
  2. 有一个库 Fody 有一个插件 PropertyChanged.Fody。它在编译过程中生成代码,其中添加了与INotifyPropoertyChanged相关的代码。

【讨论】:

  • PropertyChanged.Fody 看起来正是我所需要的。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
  • 2020-02-19
相关资源
最近更新 更多