UserControlがその子コントロールのいずれかにフォーカスの変更をキャッチする方法はありますか?
TabControl
各タブにUserControlがあるがあります。タブを切り替えるときに、コントロール項目に焦点を合わせ続けようとしています。
UserControlがその子コントロールのいずれかにフォーカスの変更をキャッチする方法はありますか?
TabControl
各タブにUserControlがあるがあります。タブを切り替えるときに、コントロール項目に焦点を合わせ続けようとしています。
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);
}