Inherited Stil eine InvalidOperationException werfen, wenn eine Aktion ausgeführt wird PauseStoryBoard

StackOverflow https://stackoverflow.com/questions/1739111

  •  20-09-2019
  •  | 
  •  

Frage

Die XAML unten ist die folgende: Wenn die Maus über einen Textblock ist, wird ihr Text vergrößern, wenn die Maus verlässt den Textblock seinen Text schrumpft. Wenn die Maus, um die Textgröße gefriert geklickt wird.

Das funktioniert wie erwartet, wenn der Stil der Textbox direkt an die SwellingTexblock Ressource festgelegt ist. Wenn jedoch der Stil des StyleWrapper Stil festgelegt, dass erbt von SwellingTexblock, ich die folgenden Ausnahme erhalten, wenn Sie die Maus (in Niederländisch) klicken:

  

Kan de naam EnlargeFont niet binnen   het namenbereik van   System.Windows.Style liefern.

Dies bedeutet so etwas wie: EnlargeFont kann nicht im Namen Umfang System.Windows.Style finden. Was ist passiert?

<Window x:Class="TriggerSpike.Window2"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window2" Height="300" Width="300">
    <Window.Resources>
        <Style x:Key="SwellingTextBlock" TargetType="TextBlock">
            <Style.Triggers>
                <EventTrigger RoutedEvent="MouseEnter">
                    <EventTrigger.Actions>
                        <BeginStoryboard Name="EnlargeFont">
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="FontSize"
                                                 To="60" Duration="0:0:10"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger.Actions>
                </EventTrigger>
                <EventTrigger RoutedEvent="MouseLeave">
                    <EventTrigger.Actions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="FontSize"
                                                 To="12" Duration="0:0:.5"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger.Actions>
                </EventTrigger>
                <EventTrigger RoutedEvent="MouseDown">
                    <PauseStoryboard BeginStoryboardName="EnlargeFont"/>
                </EventTrigger>
            </Style.Triggers>
        </Style>
        <Style x:Key="StyleWrapper" BasedOn="{StaticResource SwellingTextBlock}"
               TargetType="TextBlock"/>
    </Window.Resources>
    <StackPanel>
        <TextBlock Style="{StaticResource StyleWrapper}">test</TextBlock>
    </StackPanel>
</Window>
War es hilfreich?

Lösung

Es scheint, dass dieses Verhalten „by design“ ist. Sie haben die Animation zu einem Control bewegen es Arbeit zu machen.

Sie können die vollständige Lösung finden hier

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top