Неявный стиль xaml, перезаписанный явным стилем - PullRequest
2 голосов
/ 03 марта 2011

У меня есть эта очень простая проблема стиля xaml в Silverlight4.

Когда я устанавливаю стиль для элемента посредством явного моделирования, мой неявный стиль удаляется?Я создал простой пример, чтобы проиллюстрировать проблему.

<UserControl.Resources>
    <Style TargetType="TextBox">
        <Setter Property="Background" Value="red"/>
    </Style>

    <Style TargetType="FrameworkElement" x:Key="test">
        <Setter Property="Margin" Value="20"/>
    </Style>

</UserControl.Resources>

<Grid x:Name="LayoutRoot" Background="White">
    <TextBox Style="{StaticResource test}" Height="40" Width="120"> </TextBox>
</Grid>
</UserControl>

Поэтому, когда я удаляю Style="{StaticResource test}, неявный стиль применяется снова.

Примечание: это упрощенный пример.Таким образом, перемещение поля в стиле texbox не вариант, поскольку реальный проект содержит более широкий стиль xaml.

Кто-нибудь знает решение или может подтвердить, что это невозможно?

Спасибозаранее!

1 Ответ

2 голосов
/ 03 марта 2011

Посмотрите на свойство стиля BasedOn.Это позволит вам наследовать от базового стиля, использовать базовые свойства и добавлять некоторые изменения.

Теперь существует проблема с BasedOn - его нельзя использовать с неявным стилем.Тем не менее, это довольно легко обойти.Эта статья демонстрирует обходной путь, а также немного лучше объясняет свойство BasedOn:

Инструкции Silverlight: наследование от неявного стиля

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...