データバインドされたコンボ ボックスがあります。このリストでは、セパレーターが必要です。これはデータバインドされているため、この投稿と非常によく似た処理を行います。私のデータベースはリストを返し、セパレーターが必要な場所をマークするために「-」を含み、データトリガーはこれをセパレーターにします。
<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 項目がある場合と同じように、このセパレーターを動作させるにはどうすればよいですか (上下キーを使用するときにセパレーターをスキップします)。