mvvm - 绑定Textbox详情时如何避免属性过多
问题描述
我有一个带有 22 个文本框的 mvvm 应用程序。在我的“普通” wpf 应用程序中,我可以列出一个列表,然后将设置更改为所有框,如下所示:
Brush MyBrush = Brushes.LightGray;
foreach (var a in AllBoxes)
{
a.Background = MyBrush;
a.IsReadOnly = true;
a.IsTabStop = false;
}
因此,在 mvvm 中,我需要为每个文本框进行 3 个绑定并创建如下属性:
private Brush _clr2;
public Brush Clr2
{
get { return _clr2; }
set
{
_clr2 = value;
NotifyOfPropertyChange(() => Clr2);
}
}
有没有更简单的方法来做到这一点而不是制作 66 个属性?
解决方案
您为具有所有绑定的一个 TextBox 创建一个 UserControl...与关联的 ViewModel
<StackPanel>
<TextBox .... />
</StackPanel>
然后使用 ViewModel 的 ObservableCollection 并使用 ItemControl 创建 ParentView:
<ItemsControl ItemsSource="{Binding ListOfTextBox}">
并为您的 ItemsControl 中的项目创建一个项目模板
<DataTemplate>
<ContentControl cal:View.Model="{Binding}" />
</DataTemplate>
推荐阅读
- javascript - 如何在 CFML [coldfusion] 中为 FORGOTTEN PASSWORD 字段提供电子邮件功能
- html - 我可以在脚本 src 属性中使用双版本键来避免浏览器缓存吗
- oracle - 如何在没有控制台的情况下在 WebLogic 服务器中更改 Stuck Thread Max Time 的值
- angular - 角度编译器和核心版本有什么区别?
- ios - 如果使用 (indexPath.item % n == 0) 显示单元格,则 UICollectionView 不会创建新单元格。它不会为数字的倍数创建新单元格
- python - python中的重复导入路径模式
- json - 如何在将 csv 文件转换为 json 格式时根据某些条件检查特定字段值
- generics - 在 kotlin 中,测试泛型类型的值是否实现接口,然后将其用作该接口的正确方法是什么?
- amazon-web-services - S3 网站可以访问 API Gateway 私有端点吗?
- python - 无法编码对象:
pymongo