2

我有一个组合框,它数据绑定到项目的 ObservableCollection。我希望有一个默认选定项(无),它将我绑定到“SelectedValue”的属性的值设置为空。

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

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

4

1 回答 1

1

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

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

于 2009-07-16T06:19:38.337 回答