У меня есть поле со списком, которое привязано к данным. В этом списке мне нужен разделитель. Так как это связано с данными, я делаю нечто очень похожее на этот пост . Моя база данных возвращает список, включает '-', чтобы отметить, куда должен идти разделитель, и сборщик данных делает это разделителем.
<ComboBox Name="cbAction" Grid.Column="1" Grid.Row="0" Margin="5,2,5,2" DisplayMemberPath="Description" SelectedValuePath="Code" SelectionChanged="cbAction_SelectionChanged">
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}" BasedOn="{StaticResource {x:Type ComboBoxItem}}">
<Style.Triggers>
<DataTrigger Binding="{Binding Code}" Value="-">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ComboBoxItem}">
<Separator HorizontalAlignment="Stretch" IsEnabled="False"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
Это работает в основном нормально, за исключением проблемы, которая у меня здесь есть, и незначительной проблемы с дизайном (которую я поставлю в другом вопросе).
При использовании мыши пользователь не может выбрать разделитель, что является правильным. Но если пользователь использует стрелки вверх / вниз для выбора элементов, он может выбрать разделитель. Это не стандартное поведение, которое пропускает разделитель.
Как сделать так, чтобы этот разделитель вел себя так же, как если бы ваш XAML имел различные ComboBoxItems и элемент Separator (пропуская разделитель при использовании клавиш вверх и вниз)