2012-01-12 7 views
1

ContentControl을 포함하는 UserControl이 있습니다. 사용자가이 ContentControl을 클릭하면 해당 ContentTemplate을 변경하여 "편집 가능"으로 만듭니다 (예 : 레이블 대신 텍스트 상자가 표시됨). 는 내가 가지고있는 것은 이것이다 : ContentControl change ContentTemplate on GotFocus

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

및 UserControl을 자원이

내가

<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> 

이 미상 작동하지 않을 수 있습니다, GotFocus 이벤트가 터지지 않 보인다. 이것에가는 방법은 무엇입니까? 자주 포커스 요소는 일반적으로 실제 ContentControl하지 않기 때문에

답변

2

나는 보통 IsKeyboardFocusWithin 대신 IsFocused 내 트리거를 기반으로하지만, 오히려 내부의 제어 Content입니다.

또한 컨트롤이 포커스를받을 수 있도록 ContentControl 내부의 하나 이상의 컨트롤에서 포커스를받을 수 있는지 확인하십시오. 컨트롤 내부에 포커스를받을 수있는 것이 없으면 트리거는 절대 실행되지 않습니다.