我有一个组合框,它与项目的 ObservableCollection 进行数据绑定。我想要一个默认选定的项目(无),它将我绑定到“SelectedValue”的属性的值设置为 null。
我认为应该有一种方法可以通过 Style/DataTemplate/TemplateSelector 的某种组合来实现这一目标。我试图在设计时考虑到 MVVM,所以我想要一些不使用代码隐藏并且尽可能可重用的东西。我还希望 ObservableCollection(更新集合导致控件重新绑定)的优点保持不变。
奖金B部分:
我还希望能够将额外的视觉元素附加到 ItemsControl 的底部。我在想,如果我知道如何在集合的最后一项上触发 DataTemplate,那么更改 DataTemplate 会很容易。愿意在这里接受其他选择。
我发现执行此操作的最简单方法是将“特殊”值插入到基础集合中,并在选择该值时显示“(无)”文本。显然,您需要通过转换器运行绑定以考虑该值并在选择时返回 null。 (看这个问题 https://stackoverflow.com/questions/518579/why-cant-i-select-a-null-value-in-a-combobox这是我尝试向 ComboBox 的底层集合添加实际空值的结果。)
话虽如此,实际上可能可以用复合集合 http://msdn.microsoft.com/en-us/library/system.windows.data.compositecollection.aspx班级。您可以创建一个单独的集合(仅包含一项 - 您的 Null 项),并通过 CompositeCollection 将 ComboBox 绑定到它和原始集合。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)