2012-01-12 60 views
1

我有一个UserControl,它包含一个ContentControl。当用户点击这个ContentControl我想改变其ContentTemplate,使其“可编辑”(而不是标签显示文本框例如)。 我有这样的:ContentControl更改GotFocus上的ContentTemplate

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

这母鹿不行,看来GotFocus事件永远不会触发。有什么办法呢?

回答

2

我通常基地我的IsKeyboardFocusWithin而不是IsFocused触发器,因为往往聚焦元素通常是不实际的ContentControl,而是它里面控件的Content

此外,请确保ContentControl中的至少一个控件可以接受焦点,以便控件可以获得焦点。如果控制器内部没有任何东西可以接受焦点,则触发器永远不会触发