1

myDialog1_KeyDown イベントを処理しています。Enter キーが押されると、メソッドは次のようにフォーカスを次の要素に移動します。

UIElement focusedElement = Keyboard.FocusedElement as UIElement;
if (focusedElement != null)
{
    if(focusedElement.MoveFocus(newTraversalRequest(FocusNavigationDirection.Next)))
    e.Handled = true;
}

myDialog1 は myDockBase オブジェクトです。myDockBase は、DXWindow を拡張するクラスであり、アプリ内のすべてのモーダル ダイアログに使用されます。

問題は、ユーザーが最後のフィールドに配置されたときです。Enter キーを押すとフォーカスが閉じるボタンに移動し (最小化ボタンと最大化ボタンが非表示になります)、もう一度 Enter キーを押すとウィンドウが閉じます。

編集:私が欲しいもの:閉じるボタンがフォーカスされている場合、ユーザーがEnterキーを押してウィンドウを閉じることを許可しないか、フォーカスを閉じるボタンに移動しないでください

4

2 に答える 2

4

解決策は、閉じるボタンが必要ないと仮定して、フォーカスをまったく禁止することです。Focusableプロパティを参照してください。コードでボタンを作成する場合: closeButton.Focusable = false. XAML の場合: <Button Focusable="false" Command="...">Close</Button>. このようにして、フォーカスをナビゲートすると、閉じるボタンはサイクルに表示されません。

于 2012-09-11T18:36:24.280 に答える
0

あなたは何が起こると期待しているのかを言いません。現在のコントロールが最後のフィールドであるかどうかを確認できます (ID が必要です)。ユーザーが現在その最後のフィールドにいる場合は、次のフィールドに移動しないでください。

于 2012-09-11T16:13:28.873 に答える