Какие причины могут помешать применению явных и неявных стилей? - PullRequest
4 голосов
/ 29 апреля 2011

У меня есть тестовый проект WPF, который я использую для ответов на вопросы SO, каким-то образом этот проект со временем стал довольно загроможденным, и некоторые вещи перестали работать правильно. Это может быть не реальной проблемой, поскольку я могупросто выбросьте его и создайте новое, но очевидно, что это не совсем жизнеспособное решение в каждом случае, поэтому я подумал, что было бы интересно узнать, что может вызвать такое поведение.

Особенно удивительно, что даже явные стилине применяютсянапример, у меня есть этот стиль

<Style x:Key="EnlargeImageStyle" TargetType="{x:Type Image}">
    <Setter Property="LayoutTransform">
        <Setter.Value>
            <ScaleTransform ScaleX="1" ScaleY="{Binding RelativeSource={RelativeSource Self}, Path=ScaleX}"/>
        </Setter.Value>
    </Setter>
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Trigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation To="2" Duration="0:0:0.3"
                                     Storyboard.TargetProperty="LayoutTransform.ScaleX"/>
                    </Storyboard>
                </BeginStoryboard>
            </Trigger.EnterActions>
            <Trigger.ExitActions>
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation To="1" Duration="0:0:0.3"
                                     Storyboard.TargetProperty="LayoutTransform.ScaleX"/>
                    </Storyboard>
                </BeginStoryboard>
            </Trigger.ExitActions>
        </Trigger>
    </Style.Triggers>
</Style>

, который определен в Window.Resources, и я применяю его к минимально определенному изображению, как это:

<Image Width="80" Height="48" Style="{StaticResource EnlargeImageStyle}">
    <Image.Source>
        <BitmapImage UriSource="pack://application:,,,/Images/Img.png"/>
    </Image.Source>
</Image>

И это просто не сработаетчто-нибудь, если я попытаюсь применить его неявно, я также не получу никаких результатов.

Так как в заголовке указано, что может помешать применению явных и неявных стилей?

( Я не хочу ограничивать это своей проблемой, любая причина, с которой можно столкнуться в дикой природе, вполне подойдет )

Ответы [ 2 ]

4 голосов
/ 29 апреля 2011

Есть две распространенные причины, по которым неявные стили не применяются, которые я хочу назвать:

Целевой элемент ...

  • ... находится внутри DataTemplate илиControlTemplate (Application.Resources освобождаются от этого)
  • ... наследуется от класса, указанного в TargetType, в отличие от того же самого.
2 голосов
/ 29 апреля 2011

Ваш код выглядит нормально и должен работать. Убедитесь, что никакие другие стили или анимации не переопределяют ваш стиль по умолчанию. При оценке значения свойства зависимостей система свойств зависимостей wpf учитывает несколько факторов, таких как значение, установленное из анимации, будет иметь самый высокий приоритет. Перейдите по ссылке ниже для получения дополнительной информации

http://msdn.microsoft.com/en-us/library/ms743230.aspx

Вы можете использовать такие инструменты, как Snoop для отладки во время выполнения, чтобы проверить, какие стили на самом деле применяются.

...