【问题标题】:Append Items to Databound ItemsControl in WPF将项目附加到 WPF 中的 Databound ItemsControl
【发布时间】:2010-11-11 06:19:10
【问题描述】:

我有一个组合框,它数据绑定到项目的 ObservableCollection。我想要一个默认选中项,即 (None),它将我绑定到“SelectedValue”的属性的值设置为 null。

我认为应该有一种方法可以通过 Style/DataTemplate/TemplateSelector 的某种组合来实现这一点。我试图在设计时考虑到 MVVM,所以我想要一些不使用代码隐藏并且尽可能可重用的东西。我还希望 ObservableCollection 的好处(更新集合导致控件重新绑定)保持不变。

B 部分奖励: 我还希望能够在 ItemsControl 的底部附加一个额外的视觉元素。我在想如果我知道如何在集合的最后一项上触发它,那么更改 DataTemplate 会很容易。愿意在这里接受其他选择。

【问题讨论】:

    标签: wpf data-binding itemscontrol


    【解决方案1】:

    我发现的最简单的方法是在基础集合中插入一个“特殊”值,并在选择它时显示“(无)”文本。显然,您需要通过转换器运行绑定以考虑此值并在选择它时返回 null。 (请参阅我的this question,这是我尝试将实际的空值添加到 ComboBox 的基础集合的结果。)

    话虽如此,实际上可以使用CompositeCollection 类做你想做的事。您可以创建一个单独的集合(只有一个项目 - 您的 Null 项目)并通过 CompositeCollection 将您的 ComboBox 绑定到它和您的原始集合。

    【讨论】:

    • 我试过这个。我不太幸运将 CollectionContainer 的“Collection”属性绑定到 DataContext 中对象的属性(例如 )。虽然从静态资源中效果很好......我在这里遗漏了什么吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 2011-03-27
    相关资源
    最近更新 更多