我有一个绑定的 WPF 组合框,它的 ItemsSource 设置为 CompositeCollection。我正在尝试这样做并适应在“常规”对象的 ObservableCollection 之前添加 <Select> 和 <Add New...> 选择。我不知道如何在代码隐藏中选择这些添加的选项之一。
这就是我构建 CompositeCollection 的方式:
private CompositeCollection CreateItemsSource(ObservableCollection<T> source)
{
CompositeCollection cmpc = new CompositeCollection();
cmpc.Add(new ComboBoxItem { Content = "<Select>" });
cmpc.Add(new ComboBoxItem { Content = "<Add New...>" });
var cc1 = new CollectionContainer { Collection = source };
cmpc.Add(cc1);
return cmpc;
}
这是 ComboBox 的样子:
<DataTemplate x:Key="LookupComboTemplate">
<TextBlock Text="{Binding}"/>
</DataTemplate>
<ComboBox ItemsSource="{Binding SubCategories.ItemsSource}"
ItemTemplate="{StaticResource LookupComboTemplate}">
<ComboBox.SelectedItem>
<Binding Path="SourceData.SubCategoryObj" Mode="TwoWay"></Binding>
</ComboBox.SelectedItem>
</ComboBox>
我遇到了 SelectedItem SourceData.SubCategoryObj 为 null 的情况(它是一个可选属性)。在这种情况下,我想手动选择并显示 <Select> 选项。但是无论我做什么(设置 SelectedIndex 被忽略,将 SelectedValue 设置为 CompositeCollection 中的 ComboBoxItem 被忽略)我在渲染时都会得到一个空白的 ComboBox。
我将不胜感激有关如何做到这一点的任何建议。
谢谢!科里。