gpt4 book ai didi

wpf - 从 Storyboard 中获取框架元素

转载 作者:行者123 更新时间:2023-12-03 10:41:05 25 4
gpt4 key购买 nike

我有一个Storyboard对象实例的引用,并且想要掌握它附加到/动画化的Framework元素。我还没有想出办法。

例如,在下面的XAML中,我可以从对 Storyboard 的引用中获取Label或Grid的信息吗?

<Grid>
<Grid.Resources>
<Storyboard x:Key="myStoryboard">
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:5"/>
</Storyboard>
<Style x:Key="myStyle" TargetType="{x:Type Label}">
<Style.Triggers>
<DataTrigger
Binding="{Binding Path=StartAnimation}" Value="true">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource myStoryboard}" />
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<Label x:Name="labelHello" Grid.Row="0" Style="{StaticResource myStyle}">Hello</Label>
</Grid>

对于那些想知道为什么为什么需要这样做的人,这是因为我试图创建派生的Storyboard类或附加行为,以允许我在Storyboard complete事件触发时在DataContext上指定要调用的方法名称。这将使我能够执行纯MVVM,而不需要背后的代码来调用我的 View 模型。

最佳答案

如果您将XAML更改为以下内容:

<Grid x:Name="grid">
<Grid.Resources>
<Storyboard x:Key="myStoryboard">
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:5" Storyboard.Target="{Binding ElementName = grid}"/>
</Storyboard>
<Style x:Key="myStyle" TargetType="{x:Type Label}">
<Style.Triggers>
<DataTrigger
Binding="{Binding Path=StartAnimation}" Value="true">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource myStoryboard}" />
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<Label x:Name="labelHello" Grid.Row="0" Style="{StaticResource myStyle}">Hello</Label>
</Grid>

这将x:Name引入网格,并将Storyboard.Target引入DoubleAnimation。现在,您可以使用以下代码获取对网格的引用:
Storyboard sb = //You mentioned you had a reference to this.
var timeLine = sb.Children.First();
var myGrid = Storyboard.GetTarget(timeLine);

关于wpf - 从 Storyboard 中获取框架元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1443453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com