我正在开发我的第一个真正的WPF MVVM模式应用程序。
目前,我在各种屏幕上都有许多ComboBox,它们绑定到相关ViewModel类的Collection类和属性。
它们总是有一个带有文本<Add>
的条目,它实际上是一个空对象类,如果绑定到SelectedItem的Property在其<Add>
中,我当前用它来触发AddNewObject事件{1}}输出。这让我觉得很麻烦,它根据我的喜好将View与View模型联系得太紧密了。
e.g。
ToString()
然后在ViewModel代码中:
<ComboBox ItemsSource="{Binding AllObjects}" SelectedItem="{Binding SelectedObject}" />
XAML中是否有办法将此额外行添加到ComboBox下拉列表中并将其绑定到 public SomeObjectType SelectedObject
{
get{return this.fieldSomeObjectType;}
set
{
if(null==value)
return;
if(value.ToString().Contains(@"<Add>"))
{
if(null!=this.AddNewObject)
{
this.AddNewObject;
}
}
}
}
命令?
答案 0 :(得分:1)
您在视图中编写的代码与业务逻辑无关。没关系。 MVVM并没有说你不应该在视图的代码隐藏中有任何东西。显示“添加”是视图的要求,可以通过视图后面的代码来处理。
在ASP.NET中,我一直这样做,我将列表控件数据化为一些数据,但也在html中指定了一些项目,它们将合并它们。你试过吗?
使用CompositeCollection将默认项目与itemsource合并。 http://msdn.microsoft.com/en-us/library/ms742405.aspx