1

我有个问题:

我正在 Windows 8 中的菜单中创建幻灯片:

<Grid x:Name="grid" VerticalAlignment="Bottom" Margin="0,0,0,-500" Grid.RowSpan="2" Width="500" Height="500" Background="White" RenderTransformOrigin="0.5,0.5">
        <Grid.RenderTransform>
            <CompositeTransform/>
        </Grid.RenderTransform>
    </Grid>

我有这个动画:

<VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="ShowHideHelp">
            <VisualStateGroup.Transitions>
                <VisualTransition GeneratedDuration="0:0:0.2"/>
            </VisualStateGroup.Transitions>
            <VisualState x:Name="HideHelp"/>
            <VisualState x:Name="ShowHelp">
                <Storyboard>
                    <DoubleAnimation Duration="0" To="-500" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="grid" d:IsOptimized="True"/>
                </Storyboard>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>

如何更改我的故事板的 TO 属性(To="-500")?(突出显示)

<Storyboard> <DoubleAnimation Duration="0" To="-500"....
4

2 回答 2

1

这个对我有用,稍微改变了 Xyroids 代码:

var storyboard = ShowHelp.Storyboard;
((DoubleAnimation)(storyboard.Children[0])).To = 500;
于 2013-09-20T10:12:34.530 回答
1

尝试这个。

XAML

<Grid x:Name="grid" VerticalAlignment="Bottom" Margin="0,0,0,-500" Grid.RowSpan="2" Width="500" Height="500" Background="White" RenderTransformOrigin="0.5,0.5">
    <Grid.RenderTransform>
        <CompositeTransform/>
    </Grid.RenderTransform>
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="ShowHideHelp">
            <VisualStateGroup.Transitions>
                <VisualTransition GeneratedDuration="0:0:0.2"/>
            </VisualStateGroup.Transitions>
            <VisualState x:Name="HideHelp"/>
            <VisualState x:Name="ShowHelp">
                <Storyboard>
                    <DoubleAnimation Duration="0" To="-500" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="grid" d:IsOptimized="True"/>
                </Storyboard>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
</Grid>

C#

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    var storyboard = VisualStateManager.GetVisualStateGroups(this.grid).Get("ShowHideHelp").States.Get("ShowHelp").Storyboard;
    ((DoubleAnimation)(storyboard.Children[0])).To = 500;
}

public static class VisualStateExtensions
{
    public static VisualStateGroup Get(this IList<VisualStateGroup> stateGroups, string name)
    {
        return stateGroups.Single(x => x.Name == name);
    }

    public static VisualState Get(this IList<VisualState> stateGroups, string name)
    {
        return stateGroups.Single(x => x.Name == name);
    }
}
于 2013-09-20T09:56:34.160 回答