私の Windows 8 Metro プロジェクトでは、ContentControl から派生したクラス (MyControl と呼びましょう) を使用してコンテンツを表示しています。MyControl 内には、ScrollViewer があります。コントロールでキーボード イベントを処理する必要があるため、コントロールにフォーカスを設定できる必要があります。ただし、スクロールビューアーが矢印キーや PageUp/Down などのキーイベントを処理できるようにするオプションも必要です。より正確には、これを別のプログラマーがオンまたはオフにできるオプションにしたいと考えています。これは、MyControl をタブストップにしたい場合もあれば、ScrollViewer をタブストップにしたい場合もありますが、両方を望んでいないことを意味します。
問題は、MyControl の内部動作を他のプログラマーに公開したくないということです。つまり、理想的には、MyControl.IsTabStop を使用して、(MyControl または ScrollViewer に配置するために) コントロールに実際のタブ ストップを配置するロジックを残すことができる必要があります。
これを達成する良い方法はありますか、それともコントロールをタブストップにする別の関数を提供することで何とか回避する必要がありますか?