Silverlight - 如何在<listbox.itemtemplate> </listbox.itemtemplate>中自动开始故事板

时间:2009-12-30 12:03:16

标签: silverlight xaml

我正在尝试在a中显示绑定数据列表,然后获取Canvas以在每行后面设置动画。当我将故事板放在模板中时,我无法开始使用故事板。以下是我到目前为止的XAML示例:

    <ListBox x:Name="MyListBox" Background="Transparent" Foreground="White" Height="200" Width="400" BorderThickness="0" Margin="0">
        <ListBox.ItemTemplate>
            <DataTemplate x:Name="MySingleDataTemplate">
                <StackPanel Orientation="Horizontal" x:Name="MySingleStackPanel" Margin="0">
                    <StackPanel.Resources>
                        <Storyboard x:Name="MySingleStoryboard" BeginTime="0:0:1">
                            <DoubleAnimationUsingKeyFrames  Storyboard.TargetName="Canvas99" Storyboard.TargetProperty="Width" 
                                            AutoReverse="True" RepeatBehavior="Forever">
                                <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0" />
                                <LinearDoubleKeyFrame Value="400" KeyTime="0:0:3" />
                            </DoubleAnimationUsingKeyFrames>
                        </Storyboard>
                    </StackPanel.Resources>
                    <Grid Background="Black" x:Name="MySingleGrid" Margin="0" ShowGridLines="False">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition x:Name="Col0" Width="300" />
                            <ColumnDefinition x:Name="Col1" Width="100" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="30" x:Name="Row0" />
                        </Grid.RowDefinitions>
                        <Canvas Background="{Binding CanvasColour}" Grid.Row="0" Grid.Column="0" x:Name="Canvas99" HorizontalAlignment="Left" />
                        <TextBlock Grid.Column="0" Grid.Row="0" Text="{Binding Field1}" Margin="0"/>
                        <TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding Field2}" Margin="0"/>
                    </Grid>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

如何调用相应的C#:

MySingleStoryboard.Begin();

有没有办法可以让它从C#开始,还是我可以在Silverlight中使用其他一些属性或触发器?或者我是以完全错误的方式解决这个问题?

三江源 麦克

1 个答案:

答案 0 :(得分:3)

管理回答我自己的问题!我需要添加到我的StackPanel,如下所示:

                    <StackPanel.Triggers>
                        <EventTrigger RoutedEvent="StackPanel.Loaded">
                            <EventTrigger.Actions>
                                <BeginStoryboard>
                                    <Storyboard x:Name="MySingleStoryboard" BeginTime="0:0:1">
                                        <DoubleAnimationUsingKeyFrames  Storyboard.TargetName="Canvas99" Storyboard.TargetProperty="Width" 
                                            AutoReverse="True" RepeatBehavior="Forever">
                                            <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0" />
                                            <LinearDoubleKeyFrame Value="400" KeyTime="0:0:3" />
                                        </DoubleAnimationUsingKeyFrames>
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger.Actions>
                        </EventTrigger>
                    </StackPanel.Triggers>

工作一个款待,现在我只需要摆脱列表框上的所有边距/边框等,我会很高兴....现在。 麦克

相关问题