绑定的ComboBox中的默认项

时间:2012-09-04 11:04:22

标签: wpf styles

我有一个绑定ComboBox我需要显示默认项目“No Selection”。当用户从列表中选择此选项(“无选择”)时,ComboBox应关闭,不选择任何文本,也不选择任何项目。

这些是数据资源

<UserControl.Resources>
    <my:iTimeKeepBaseDataSet x:Key="iTimeKeepBaseDataSet" />
    <CollectionViewSource x:Key="codeSetsViewSource" Source="{Binding Path=codeSets, Source={StaticResource iTimeKeepBaseDataSet}}" />
    <CollectionViewSource x:Key="allMattersViewSource" Source="{Binding Path=allMatters, Source={StaticResource iTimeKeepBaseDataSet}}" />
    <my:CodeIdToDetailsConverter x:Key="codeIdDetailsConverter" />

</UserControl.Resources>

这是ComboBox数据模板

                  <DataTemplate x:Key="CodeSetDataCellEditTemplate">
                        <ComboBox DataContext="{StaticResource codeSetsViewSource}"
                                  ItemsSource="{Binding}"
                                  SelectedValuePath="{Binding Path=codeSetId}"
                                  SelectionChanged="OnCodeSetsSelectionChanged"
                                  Style="{StaticResource ComboboxTemplate}">

                            <ComboBox.ItemTemplate>
                                <DataTemplate>

                                    <TextBlock>
                                        <TextBlock.Text>
                                            <MultiBinding StringFormat="{}{0} - {1}">
                                                <Binding Path="codeSetId" />
                                                <Binding Path="codeSetName" />
                                            </MultiBinding>
                                        </TextBlock.Text>
                                    </TextBlock>
                                </DataTemplate>
                            </ComboBox.ItemTemplate>
                        </ComboBox>
                    </DataTemplate>

DataGrid的模板列

<DataGridTemplateColumn x:Name="codeSetId1Column"
                                        Width="SizeToHeader"
                                        CellEditingTemplate="{StaticResource CodeSetDataCellEditTemplate}"
                                        Header="Code Set ID 1"
                                        my:DataGridAttachedProperty.ColumnName="codeSetId1">

请建议我解决此问题。

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以使用CompositeCollection

    <CompositeCollection>
       <ComboBoxItem IsEnabled="False" Foreground="Black">Select Item</ComboBoxItem>
       <CollectionContainer Collection="{Binding Source={StaticResource DataKey}}" />    
    </CompositeCollection>

但是,你不能在这里使用Binding,解决方法是使用BindingProxy和CompositeCollection

请参阅此处的my answer和评论了解更多详情