2012-01-12 24 views
1

私はContentControlを含むUserControlを持っています。ユーザーがこのContentControlをクリックすると、ContentTemplateを変更して「編集可能」にします(ラベルにはテキストボックスなどが表示されます)。 私が持っていることはこれです:ContentControl change ContentTemplate on GotFocus

<StackPanel> 
    <ContentControl Style="{DynamicResource ContainerStyleEditable}" GotFocus="ContentControl_GotFocus"></ContentControl> 
</StackPanel> 

と私は

<Style TargetType="{x:Type ContentControl}" x:Key="ContainerStyleEditable"> 
    <Setter Property="ContentTemplate" Value="{DynamicResource ItemTemplateReadOnly}" /> 
    <Style.Triggers> 
     <Trigger Property="IsFocused" Value="True"> 
      <Setter Property="ContentTemplate" Value="{DynamicResource ItemTemplateEditable}" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

このDOEは動作しない持っているユーザーコントロールのリソースでは、GotFocusイベントが発火することはありませんようです。これへの道は何ですか?

答えて

2

しばしば集中要素は通常、実際のContentControlないが、むしろ内部の制御がContentですので、私は通常IsKeyboardFocusWithin代わりのIsFocusedの私のトリガーをベースにします。

また、ContentControl内の少なくとも1つのコントロールがフォーカスを受け取り、コントロールがフォーカスを取得できるようにしてください。コントロール内に何もフォーカスを受け入れることができない場合、トリガーは決して起動しません。

関連する問題