ContentControl изменить ContentTemplate на GotFocus - PullRequest
2 голосов
/ 12 января 2012

У меня есть UserControl, который содержит 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 никогда не срабатывает. Какой путь к этому?

1 Ответ

3 голосов
/ 12 января 2012

Я обычно основываю свои триггеры на IsKeyboardFocusWithin вместо IsFocused, потому что часто сфокусированный элемент обычно не фактический ContentControl, а скорее элемент управления внутри его Content.

Также,убедитесь, что хотя бы один элемент управления внутри ContentControl может принимать фокус, чтобы элемент управления мог получить фокус.Если ничто внутри элемента управления не может принять фокус, ваш триггер никогда не сработает.

...