我有一个组合框,可以将数据绑定到一个ObservableCollection项目。我想有一个默认的选定项目(None),它将我绑定到“SelectedValue”的属性的值设置为null。
我认为应该有一种方法可以通过Style / DataTemplate / TemplateSelector的某种组合来实现这一点。我正在尝试用MVVM来设计这个,所以我想要一些不使用代码隐藏并且尽可能重用的东西。我也喜欢ObservableCollection(更新导致控件重新绑定的集合)的好处保持不变。
奖金B部分: 我还希望能够在ItemsControl的底部添加额外的可视元素。我想如果我知道如何在集合的最后一项上触发它,那么更改DataTemplate会很容易。愿意在这里享受其他选择。
答案 0 :(得分:1)
我发现这样做的最简单方法是在底层集合中插入“特殊”值,并在选中时显示“(无)”文本。显然,您需要通过转换器运行绑定以将此值考虑在内并在选择时返回null。 (参见我的this question,这是我尝试将一个实际的空值添加到ComboBox的底层集合的结果。)
话虽如此,实际上可以用CompositeCollection类做你想做的事。你可以创建一个单独的集合(只有一个项目 - 你的Null项目)并通过CompositeCollection将你的ComboBox绑定到它和你的原始集合。