2

私はWPFコンボボックスを持っています...これは編集できません。このコンボボックスにタブで移動すると...コンボ<Setter Property="IsDropDownOpen" Value="True"/>ボックスを開くためのスタイルセッター()があります。しかし、もう一度タブを押すと、開いたコンボボックスの次の項目にフォーカスが移動し、そこで循環します。次のコントロールにタブアウトできません。

ここで何が問題になっていますか?

ありがとう

4

3 に答える 3

2

試す :

<Style TargetType="{x:Type ComboBoxItem}">
    <Setter Property="IsTabStop" Value="False"/>
</Style>

または

KeyboardNavigationを操作する:

カスタムコントロールを使用したWPFタブの順序?

お勧めしませんが、動作します...

      <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;
        }
于 2012-10-23T19:27:02.677 に答える
0

次のコードで同じことを達成できます:-

 private void comboBox1_KeyDown(object sender, KeyEventArgs e)
  {
    if (e.Key == Key.Enter)
        {
            IsDropDownOpen = true;
            e.Handled = true;
        }
  }

これで、フォーカスがComboBoxに設定されたら、Enterキーを押してドロップダウンを開く必要があり、下のキーワードを使用してComboBoxアイテムをトラバースできます。次のコントロールに移動するには、Tabキーを押す必要があります。

于 2014-11-25T11:27:13.033 に答える
0

私は同じ問題を抱えていましたが、XAMLで次のように解決しました:

<Style x:Key="RadComboBoxItemStyle" TargetType="telerik:RadComboBoxItem">
        <Setter Property="Focusable"
                Value="False" />
        <Setter Property="IsHitTestVisible"
                Value="True" />
于 2015-04-07T10:13:17.403 に答える