1

UserControlがその子コントロールのいずれかにフォーカスの変更をキャッチする方法はありますか?

TabControl各タブにUserControlがあるがあります。タブを切り替えるときに、コントロール項目に焦点を合わせ続けようとしています。

4

1 に答える 1

1

LostFocusユーザーコントロール内の各コントロールのイベントをサブスクライブできます。

これを自動的に行うには、初期化時にサブスクライブし、子をループします。ただし、子を直接知る必要があるか (メンバー変数のように)、ユーザー コントロールが ItemsControl である/含まれている必要があります。

テンプレートからの項目コントロールが含まれている場合は、パーツに割り当てた名前を使用してテンプレート コントロールを検索する必要があります。

<ControlTemplate>
 <Grid x:Name="PART_ChildrenContainer">
  <ItemsPresenter> <!--This will contain your children-->
 </Grid>
</ControlTemplate>

次に、次のことを行う必要があります。

var grid = (Grid)this.Template.FindName("PART_ChildrenContainer",...);
foreach(var child in grid.Children)
{
   child.PreviewLostKeyboardFocus += 
       new System.Windows.Input.KeyboardFocusChangedEventHandler(eventHandler);
}
于 2013-02-13T20:24:33.060 に答える