[英]Is it possible to add a default ComboBox entry with command binding in XAML?
我正在开发我的第一个真正的WPF MVVM模式应用程序。
目前,我在各种屏幕上都有许多ComboBox,这些ComboBox绑定到Collection类和相关ViewModel类的属性。
他们总是有一个带有文本<Add>
的条目,这实际上是一个空的对象类,如果绑定到SelectedItem的Property在其ToString()
输出中具有<Add>
,则我当前使用它来触发AddNewObject事件。 这给我带来了麻烦,并且将View与View模型联系得太紧密了(我喜欢)。 例如
<ComboBox ItemsSource="{Binding AllObjects}" SelectedItem="{Binding SelectedObject}" />
然后在ViewModel代码中:
public SomeObjectType SelectedObject
{
get{return this.fieldSomeObjectType;}
set
{
if(null==value)
return;
if(value.ToString().Contains(@"<Add>"))
{
if(null!=this.AddNewObject)
{
this.AddNewObject;
}
}
}
}
XAML中是否有一种方法可以将此多余的行添加到ComboBox下拉列表中,并将其绑定到AddNewObject
命令?
您在视图中编写的代码与业务逻辑无关。 没关系。 MVVM并不表示视图的代码中不应包含任何内容。 在视图上显示“添加”是必需的,并且可以由视图后面的代码来处理。
在ASP.NET中,我一直在执行以下操作:将列表控件数据绑定到一些数据,但同时在html中指定了一些项目,它将合并它们。
你有尝试过吗?
使用CompositeCollection将默认项目与itemsource合并。 http://msdn.microsoft.com/en-us/library/ms742405.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.