我有一个绑定的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被忽略,将CompositeValue设置为CompositeCollection中的ComboBoxItem被忽略)我在渲染时得到一个空白的ComboBox .
我很感激有关如何做到这一点的任何建议 .
谢谢!科里 .
1 回答
您应该可以使用SelectedItem绑定的自定义valueconverter来解决此问题 . http://wpftutorial.net/ValueConverters.html应该给你一些指示 .
我不确定combox是否需要一个简单的字符串或一些复合对象,但你可以检查一下 . 就像是
如果所选项目为空,则应该为您提供“<Select>”条目 .