我有一个包含ContentControl
的UserControl。当用户点击此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>
这个doe不起作用,似乎GotFocus
事件永远不会发生。这是怎么回事?
答案 0 :(得分:3)
我通常将IsKeyboardFocusWithin
而不是IsFocused
的触发器作为基础,因为通常焦点元素通常不是实际的ContentControl
,而是它内部的控件Content
。
此外,请确保ContentControl
中的至少一个控件可以接受焦点,以便控件可以获得焦点。如果控件内部没有任何东西可以接受焦点,则触发器永远不会触发。