データバインドされたコンボボックスがあります。このリストでは、区切り記号が必要です。これはデータバインドされているので、私はthis postと非常によく似た何かをしています。私のデータベースはリストを返し、区切り記号がどこに行かなければならないのかを示すために ' - 'を含み、datatriggerはこれを区切り記号にします。WPFのデータバインドコンボボックスでセパレータの選択を無効にする
<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を持っていた場合、それは次のようになり道とセパレーターアイテム(上下キーを使用している場合、セパレータをスキップ)
IsEnabledを設定するとこの問題は解決しました。 – jmlumpkin