【发布时间】:2016-03-21 10:21:08
【问题描述】:
假设我想创建一个 WPF 表单。 在这种形式中,有一堆标题和字幕。 论文标题和副标题使用相同的控件进行演示。 此控件只是顶部分隔符和底部分隔符之间的标签。 标题必须有两个分隔符,副标题只能有底部分隔符。 此控件中有一个布尔依赖属性。如果设置为 true,则有一个顶部分隔符。
是否可以在模型中为每个标题/副标题绑定此属性?
public class MyModelObject : ViewModelBase
{
private string _labelName;
public string LabelName
{
get
{
return _labelName;
}
set
{
_labelName=value;
RaisePropertieChanged(()=>LabelName);
}
}
private bool _topSeparator;
public bool TopSeparator
{
get
{
return _topSeparator;
}
set
{
_topSeparator=value;
RaisePropertieChanged(()=>TopSeparator);
}
}
}
我不太喜欢它...因为模型不应该有关于视图的信息。但是有没有一种干净的方法呢?
我正在考虑视图的特定模型...但我不确定。
提前致谢!
---------------- 更新 -----------------
在按照 Vadim Martynov 的建议查看 IValueConverter 之后,我看到一些人将他们的模型包装起来以处理这些情况。 所以这是我的结论:
- 当有一个或两个视图特定属性时,只需制作一两个特定的IValueConverter
- 当有多个视图特定属性时,最好制作一个 Wrapper(看看这篇文章:Binding Model properties directly in View)
我说的对吗?
【问题讨论】:
标签: c# wpf mvvm viewmodel mvvm-light