WPF UserControl Animation не работает ..? - PullRequest
3 голосов
/ 20 июля 2011

Я действительно новичок в WPF, так что если вы можете указать мне на тутоирал, я буду очень счастлив:)

вот мой валютный код:

<Grid Name="Grid">
    <local:Card Loaded="Card_Loaded"
                x:Name="MyCard">
        <local:Card.Triggers>
            <EventTrigger RoutedEvent="local:Card.Loaded">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetName="MyCard"
                                         Storyboard.TargetProperty="Opacity"
                                         From="1.0"
                                         To="0.0"
                                         Duration="0:0:5"
                                         AutoReverse="True"
                                         RepeatBehavior="Forever" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </local:Card.Triggers>
    </local:Card>
</Grid>

local: карта является пользовательским элементом управления

Вот почему я использую x: Name = "" , а не Name = "" :

Because 'MS.Internal.Design.Metadata.ReflectionTypeNode' is implemented in the same assembly, you must set the x:Name attribute rather than the MS.Internal.Design.Metadata.ReflectionPropertyNode attribute.

И я вижу карту и все, но анимация не работает = \

Вот карта XAML:

<UserControl.Resources>
    <x:Array Type="{x:Type s:String}"
             x:Key="src">
        <s:String>Foo</s:String>
    </x:Array>
    <DataTemplate x:Key="frontTemplate">
        <Grid Background="Transparent">
            <Image Source="Images\Card.jpg" />
        </Grid>
    </DataTemplate>
    <DataTemplate x:Key="backTemplate">
        <GroupBox Header="Back"
                  Background="White">
            <StackPanel>
                <RadioButton Content="This"
                             IsChecked="True" />
                <RadioButton Content="Is" />
                <RadioButton Content="The" />
                <RadioButton Content="Back" />
            </StackPanel>
        </GroupBox>
    </DataTemplate>
</UserControl.Resources>
<ScrollViewer>
    <ItemsControl Width="180"
                  Height="250"
                  ItemsSource="{StaticResource src}"
                  ItemTemplate="{StaticResource flipItemTemplate}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>
</ScrollViewer>

Ответы [ 3 ]

2 голосов
/ 21 июля 2011

Я точно скопировал ваш XAML и запустил его в окне.Единственное изменение, которое я сделал, было заменить локальный объект Card на TextBlock (так как у меня не было пользовательского контроля Card).Анимация прошла отлично.

Так что или у вашего local:Card объекта есть что-то странное, что не позволяет анимации работать, или метод Loaded="Card_Loaded" в этой строке:

<local:Card Loaded="Card_Loaded" x:Name="MyCard">

isвмешательство в триггер события:

<EventTrigger RoutedEvent="local:Card.Loaded">
0 голосов
/ 21 июля 2011

Решение:

<Grid Name="Grid">
    <local:Card x:Name="MyCard" MouseEnter="MyCard_MouseEnter" />
</Grid>
<Window.Resources>
    <Storyboard x:Key="sbdCardAnim">
        <DoubleAnimation
            Storyboard.TargetName="MyCard" 
            Storyboard.TargetProperty="Opacity"
            From="1" To="0" Duration="0:0:5"
            AutoReverse="True" RepeatBehavior="Forever" />
    </Storyboard>
</Window.Resources>

C #:

    private void MyCard_MouseEnter(object sender, MouseEventArgs e)
    {
        Storyboard sbdCardAnim = (Storyboard)FindResource("sbdCardAnim");
        sbdCardAnim.Begin(this);
    }
0 голосов
/ 21 июля 2011

Поместите раскадровку в теги EventTrigger.EnterActions или EventTrigger.Actions.

Я недавно погрузился в некоторые анимации WPF .... вот ссылка, с которой я начал: http://www.galasoft.ch/mydotnet/articles/article-2006102701.aspx

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