Отключить выбор выпадающих элементов в ComboBox - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть comboBox, стилизованный под ряды текстовых блоков и флажки, позволяющие пользователю проверять список различных вещей.То, что я пытаюсь сделать, это отключить выделение строки в выпадающем списке.

Код моего просмотра:

<ComboBox ItemsSource="{Binding HeaderList}" 
    IsSelected="False"
    HorizontalAlignment="Left"
    Height="10"
    x:Name="ComboBox">
    <ComboBox.ItemTemplate>
       <DataTemplate>
          <StackPanel Orientation="Horizontal">
             <CheckBox IsChecked="{Binding IsChecked}"/>
             <TextBlock Text="{Binding HeaderName}"/>
          </StackPanel>
       </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

Вот изображениемой выпадающий список:

enter image description here

Вот изображение того, чего я не хочу:

enter image description here

Я хочу отключить возможность для пользователя выбирать конкретную строку, но оставить для него возможность выбирать различные флажки в раскрывающемся списке.Есть ли способ стилизовать это?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

У меня была такая же проблема, я решил ее, используя ToggleButton в сочетании с Popup (вместо ComboBox)

Примечание: Не тестировалось

<ToggleButton x:Name="filterButton" />
<Popup x:Name="popup" 
    AllowsTransparency="True" 
    StaysOpen="False"
    PlacementTarget="{Binding ElementName=filterButton}"
    IsOpen="{Binding ElementName=filterButton,Path=IsChecked,Mode=TwoWay}">
    <ItemsControl ItemsSource="{Binding HeaderList}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <CheckBox IsChecked="{Binding IsChecked}"/>
                    <TextBlock Text="{Binding HeaderName}"/>
                </StackPanel>
            </DataTemplate>                                    
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</Popup>
0 голосов
/ 05 декабря 2018

Вы можете попытаться установить selectedindex вашего комбинированного списка на -1 в событии selectionbreak

private void myComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        myComboBox.SelectedIndex = -1;
    }
...