2011-07-05 24 views
3

WPFでComboBoxコントロールに問題があります。WPFコンボボックスとIsTabStopの動作

IsTabStopプロパティを制御しようとしましたが、期待通りに機能しません。

ComboBoxが編集可能でない場合、IsTabStopは正しく機能しますが、ComboBoxが編集可能な場合は、常にキーボードのナビゲーションからフォーカスが当てられます。 IsTabStop = falseは効果がありません!

さらにComboBoxが編集可能で、IsTabStopがtrueの場合、以前のコントロールへのキーボードナビゲーションは「ロックされています」...「Shift + Tab」は機能しません。

これはWPFバグですか?回避策はありますか?

私は.Net 4.0を使用しています。

これは一例です...

<Window 
    x:Class="MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" 
    Height="250" 
    Width="600"> 

    <StackPanel 
    Orientation="Horizontal" 
    VerticalAlignment="Center"> 
    <TextBox 
     Width="50" 
     IsTabStop="True"> 
    </TextBox> 
    <ComboBox 
     Name="cmb1" 
     Margin="10,0,0,0" 
     Width="50" 
     IsEditable="True" 
     IsTabStop="False"> 
    </ComboBox> 
    <DatePicker 
     Name="dp1" 
     Margin="10,0,0,0" 
     Width="50" 
     IsTabStop="True"> 
    </DatePicker> 
    <TextBox 
     Margin="10,0,0,0" 
     Width="50" 
     IsTabStop="False"> 
    </TextBox> 
    <ComboBox 
     Name="cmb2" 
     Margin="10,0,0,0" 
     Width="50" 
     IsTabStop="False"> 
    </ComboBox> 
    <ComboBox 
     Name="cmb3" 
     Margin="10,0,0,0" 
     Width="50" 
     IsEditable="True" 
     IsTabStop="True"> 
    </ComboBox> 

    </StackPanel> 
</Window> 

は「CMB1は」IsTabStop = Falseに、「CMB2」にも焦点を当てて取る...最初のテキストボックスから最後のコンボボックスにタブで移動しよう、それはだbacause okです編集不可、 "cmb3"ではShift + Tabで前のコントロールに戻ることはできません。

また、DatePickerも同じ問題があるようです。

+0

問題を再現するためにXAMLをすばやく使用できますか? –

+0

私は –

答えて

1

ええが、コンボボックスの問題のようです、誰かがマイクロソフトとそれを提起:

Have a look here。回避策があるようです。

これは回避策です。ウィンドウ/コントロールのLoadedイベントで次のコードを入力します。

var textBox = myCbo.Template.FindName("PART_EditableTextBox", myCbo) as TextBox; 
if (textBox != null) 
    textBox.IsTabStop = myCbo.IsTabStop; 

コンボボックス名にmyCboを変更します。

+0

の下によく投稿しました...回避策のアイデアはありますか? –

+0

は、提供されたリンクの回避策のタブを見ていますが、それはあなたの問題を解決しますか? –

+0

Okok ...私は解決する。私は、標準のComboBoxを拡張したCustomComboBoxを作成しました.OpenAppTemplateメソッドでは、編集可能なテキストボックスを見つけました。また、テキストボックスのIsTabStopプロパティをComboBoxのIsTabStopに割り当てました。 –

5

少し遅れましたが、先日この同じ問題を探していました。私はKeyboardNavigation.TabNavigation="None"が問題を解決することを発見しました。

+2

ニース。レコードの場合、TabStop = "False"を使用し、KeyboardNavigation.TabNavigation = "None"を使用してこれを期待どおりに動作させる必要がありました。 WPFが再びWPFである... –

関連する問題