私はWPFコンボボックスを持っています...これは編集できません。このコンボボックスにタブで移動すると...コンボ<Setter Property="IsDropDownOpen" Value="True"/>
ボックスを開くためのスタイルセッター()があります。しかし、もう一度タブを押すと、開いたコンボボックスの次の項目にフォーカスが移動し、そこで循環します。次のコントロールにタブアウトできません。
ここで何が問題になっていますか?
ありがとう
私はWPFコンボボックスを持っています...これは編集できません。このコンボボックスにタブで移動すると...コンボ<Setter Property="IsDropDownOpen" Value="True"/>
ボックスを開くためのスタイルセッター()があります。しかし、もう一度タブを押すと、開いたコンボボックスの次の項目にフォーカスが移動し、そこで循環します。次のコントロールにタブアウトできません。
ここで何が問題になっていますか?
ありがとう
試す :
<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="IsTabStop" Value="False"/>
</Style>
または
KeyboardNavigationを操作する:
お勧めしませんが、動作します...
<Grid>
<ComboBox Grid.Row="1" Margin="0,0,0,0" Name="comboBox1" HorizontalAlignment="Left" Width="120" Height="20" IsEditable="False" KeyDown="comboBox1_KeyDown" GotKeyboardFocus="comboBox1_GotKeyboardFocus" >
<ComboBox.Style>
<Style TargetType="{x:Type ComboBox}">
<Style.Triggers>
<Trigger Property="IsKeyboardFocusWithin" Value="True">
<Setter Property="IsDropDownOpen" Value="True" />
</Trigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
<ComboBoxItem>Male</ComboBoxItem>
<ComboBoxItem>Female</ComboBoxItem>
<ComboBoxItem>Unknown</ComboBoxItem>
</ComboBox>
</Grid>
private void comboBox1_KeyDown(object sender, KeyEventArgs e)
{
ComboBox cb = sender as ComboBox;
if (e.Key == Key.Tab && cb.IsDropDownOpen)
{
ComboBoxItem item = FocusManager.GetFocusedElement(Window.GetWindow(this)) as ComboBoxItem;
cb.SelectedItem = item;
cb.IsDropDownOpen = false;
e.Handled = true;
}
}
private void comboBox1_GotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
ComboBox cb = sender as ComboBox;
cb.IsDropDownOpen = true;
}
次のコードで同じことを達成できます:-
private void comboBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
IsDropDownOpen = true;
e.Handled = true;
}
}
これで、フォーカスがComboBoxに設定されたら、Enterキーを押してドロップダウンを開く必要があり、下のキーワードを使用してComboBoxアイテムをトラバースできます。次のコントロールに移動するには、Tabキーを押す必要があります。
私は同じ問題を抱えていましたが、XAMLで次のように解決しました:
<Style x:Key="RadComboBoxItemStyle" TargetType="telerik:RadComboBoxItem">
<Setter Property="Focusable"
Value="False" />
<Setter Property="IsHitTestVisible"
Value="True" />