0

我有一个界限ComboBox,我需要显示默认项目“无选择”。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">

请为此建议我一个解决方案。

提前致谢

4

1 回答 1

0

您可以使用 CompositeCollection

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

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

在此处查看我的答案和评论以获取更多详细信息

于 2012-09-04T11:09:16.413 回答