WPF ComboBox Показать альтернативный текст - PullRequest
1 голос
/ 26 июля 2011

Я пытаюсь изменить текст кнопки со списком 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}" />

...