WPF ComboBox显示备用文本

时间:2011-07-26 02:31:36

标签: wpf combobox ivalueconverter

我正在尝试将WPF组合框按钮的文本更改为不是实际所选项目的自定义内容。组合框控件设置有一个自定义数据模板,允许它包含复选框,我正在尝试做的是显示“无选择”,[SelectedItem.Text]或“多选”取决于是否检查零项,一个是检查或检查多个。我在这里找到了一个解决方案,其中包括添加一个可以显示此文本的新文本块实例,然后将其文本设置为我想要显示的内容。这很有效,直到有人点击复选框标签旁边的区域,该项目的文本显示在我的自定义文本块下面,导致奇怪的重叠问题。

我的假设是某种转换器(就我而言,它可以取代自定义文本块 - 没有偏好),但我不完全确定如何应用它。到目前为止,这是我的XAML:

<Grid Grid.Row="4" Grid.Column="1">
     <Grid.RowDefinitions>
          <RowDefinition Height="Auto" />
          <RowDefinition Height="Auto" />
     </Grid.RowDefinitions>
<ComboBox x:Name="SubjectMatterList" Style="{StaticResource ComboBox}" ItemsSource="{Binding SubjectMatters}" Visibility="{Binding AdjunctListVisibility}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal" MinWidth="125" MaxWidth="125" Margin="6">
                <CheckBox Content="{Binding Name}">
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="Checked">
                            <mvvm:EventToCommand Command="{Binding DataContext.SubjectMatterSelectedCommand, ElementName=GradeLevelList}" CommandParameter="{Binding}" />
                        </i:EventTrigger>
                        <i:EventTrigger EventName="Unchecked">
                            <mvvm:EventToCommand Command="{Binding DataContext.SubjectMatterDeselectedCommand, ElementName=GradeLevelList}" CommandParameter="{Binding}" />
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                </CheckBox>
            </StackPanel>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>
<TextBlock IsHitTestVisible="False" x:Name="SelectedSubjectMatter" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10" Padding="10,6,0,6" Text="{Binding ComboBoxSubjectMatterText}" Visibility="{Binding AdjunctListVisibility}" />
<TextBlock Text="{Binding SelectedSubjectMatterText}" Grid.Row="1" Margin="10" Visibility="{Binding SubjectMatterSelectedVisibility}" />