2010-09-28 54 views
0

我正在处理我的第一个真正的WPF MVVM模式应用程序。是否可以在XAML中添加一个带有命令绑定的默认组合框条目?

目前我有各种屏幕上的ComboBoxes数量绑定到相关ViewModel类的集合类和属性。

他们总是有文字<Add>,这实在是一个空的对象类和我目前用它来触发一个事件AddNewObject如果绑定的SelectedItem属性具有<Add>在其ToString()输出的条目。这让我觉得很麻烦,而且它将View与我喜欢的View模型过于紧密地联系在一起。 例如

<ComboBox ItemsSource="{Binding AllObjects}" SelectedItem="{Binding SelectedObject}" /> 

然后在视图模型代码:

public SomeObjectType SelectedObject 
    { 
    get{return this.fieldSomeObjectType;} 
    set 
    { 
     if(null==value) 
     return; 
     if(value.ToString().Contains(@"<Add>")) 
     { 
     if(null!=this.AddNewObject) 
     { 
      this.AddNewObject; 
     } 
     } 
    } 
} 

是否有增加这额外的进线组合框下拉列表,并将其绑定到AddNewObject命令的XAML的方法吗?

回答

1

您在视图中编写的代码与您的业务逻辑无关。没关系。 MVVM并没有说你不应该在视图的代码隐藏中有任何东西。显示'添加'是视图上的要求,可以由视图背后的代码处理。

在ASP.NET中,我一直这样做,我将列表控件数据绑定到一些数据,但也指定了html中的一些项目,它会合并它们。你尝试过吗?

使用CompositeCollection将默认项目与项目源合并。 http://msdn.microsoft.com/en-us/library/ms742405.aspx

+0

好的 - 值得一提的是+1,但是可以在XAML中做到这一点,否则我会吠叫错误的树 - 可以这么说吗? – ChrisBD 2010-09-29 16:01:35

+0

在ASP.NET中,我一直这样做,我把数据绑定到一些数据的列表控件,但也在html中指定了一些项目,它会合并它们。你尝试过吗? – 2010-09-29 20:27:43

相关问题