Wpf ContentControl更改GotFocus上的ContentTemplate
我有一个UserControl,它包含一个Wpf ContentControl更改GotFocus上的ContentTemplate,wpf,user-controls,wpf-controls,Wpf,User Controls,Wpf Controls,我有一个UserControl,它包含一个ContentControl。当用户单击此ContentControl时,我想更改其ContentTemplate,使其“可编辑”(而不是标签显示文本框)。 我所拥有的是: <StackPanel> <ContentControl Style="{DynamicResource ContainerStyleEditable}" GotFocus="ContentControl_GotFocus"></ContentC
ContentControl
。当用户单击此ContentControl
时,我想更改其ContentTemplate
,使其“可编辑”(而不是标签显示文本框)。
我所拥有的是:
<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
事件从未触发。实现这一点的方法是什么?我通常将iskeyboardfocus的触发器设置在内,而不是IsFocused
,因为焦点元素通常不是实际的ContentControl
,而是它的内容中的一个控件
另外,请确保ContentControl
中至少有一个控件可以接受焦点,以便该控件可以获得焦点。如果控件中没有任何东西可以接受焦点,则触发器将永远不会触发