2016-06-20 14 views
0

私は注意を必要とする入力にユーザーを誘導するアプリケーションに検証モジュールを追加します。私は、Visual Treeに追加されたのと同じ順序でこれらのコントロールを実行したいと思います。各コントロールのタブインデックスは、Int Maxに設定されています。つまり、Visual Treeの順番で表示されます。WPF(つまり、ビジュアルツリーの順序)でデフォルトのタブ順序を取得するにはどうすればよいですか?

私の妥当性検査モジュールは、検証するための一連のコントロールを取得します。ユーザはフォームを上から下に並べ替える必要があります。私は元のタブ動作を保持したいと思います。 リストのコントロールのビジュアルツリーの順序を知るだけで、正しく並べ替えることができます。

+0

すべてのコントロールを呼び出してみましたが、現在のtabindexを取得しましたか?もしそうなら、他に何を試しましたか? –

+0

明示的に設定されていない限り、現在のタブインデックスはInt Maxに設定されています。これは、ビジュアルツリーの順番になります。はい、私はこれを試しました。 – NielW

答えて

0

数日の研究の後、私はこれが箱から提供されていないことを認識しました。最後に、すべてのFrameworkElementsを取得するためにFindVisualChildrenと呼びました。コントロールがIValidatableインターフェイスを実装している場合は、カウンタから次に使用可能なインデックスを割り当てました。私はそれを動作させるためにOrderと呼ばれる依存性プロパティを追加しなければなりませんでした(私は既存のTabIndexと混乱したくありませんでした)。次に、検証が必要なコントロールのリストを取得したとき、Orderでそれらをソートしました。

これは確かにスケーラブルな解決策ではありませんが、幸いにも一度だけ実行する必要があります。

もっと良い解決策をお持ちの方は、ぜひ投稿してください。私は汚れている。

関連する問題