【问题标题】:Is it possible to add a default ComboBox entry with command binding in XAML?是否可以在 XAML 中添加带有命令绑定的默认 ComboBox 条目?
【发布时间】:2010-09-28 11:24:01
【问题描述】:

我正在开发我的第一个真正的 WPF MVVM 模式应用程序。

目前,我在各种屏幕上有许多组合框,它们绑定到 Collection 类和相关 ViewModel 类的属性。

他们总是有一个带有文本<Add> 的条目,这实际上是一个空对象类,如果绑定到 SelectedItem 的属性在其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 命令?

【问题讨论】:

    标签: c# wpf xaml binding


    【解决方案1】:

    您在视图中编写的代码与您的业务逻辑无关。没关系。 MVVM 并没有说您不应该在视图的代码隐藏中包含任何内容。显示“添加”是对视图的要求,可以由视图后面的代码处理。

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

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

    【讨论】:

    • 好的 - 值得知道 +1,但是否有可能在 XAML 中执行此操作,或者我会叫错树 - 可以这么说?
    • 在 ASP.NET 中,我一直在这样做,我将列表控件数据绑定到一些数据,但还在 html 中指定了一些项目,它将合并它们。你试过吗?
    猜你喜欢
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 2017-12-15
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    相关资源
    最近更新 更多