gpt4 book ai didi

wpf - 如何从另一个 View 在目标元素上使用 Storyboard ?

转载 作者:行者123 更新时间:2023-12-03 10:14:52 24 4
gpt4 key购买 nike

我使用 Storyboard来制作动画:

  <Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="Studio" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:2"/>
<DoubleAnimation Storyboard.TargetName="Animation" Storyboard.TargetProperty="Opacity" From="0" To="0.3" Duration="0:0:2"/>
<DoubleAnimation Storyboard.TargetName="Record" Storyboard.TargetProperty="Opacity" From="0" To="0.3" Duration="0:0:2"/>
<DoubleAnimation Storyboard.TargetName="Info" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:2"/>
<DoubleAnimation Storyboard.TargetName="info_content" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:2"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>

但目标在另一个 View XAML 中。我假设我应该使用 ViewModel 来访问它们,但我需要更多提示。

最佳答案

我创建了一个 UserControlButton ,并尝试 animate来自 MainWindow 的那个按钮.

问题:您需要引用要设置动画的 Button,以便将其用于 Storyboard.Target属性(property)。这可以使用适当的处理程序来解决。我使用 Window 的 Loaded事件,并使用 FindName UserControl的()方法| .

FindName() 返回可以使用 DP 或 INPC 支持的普通属性公开的对象。

然后这个引用被绑定(bind)到 Storyboard.Target属性(property)。

主窗口:

        <Button ...>
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard Name="Sb1">
<DoubleAnimation To="150.0"
Duration="0:0:2"
Storyboard.Target="{Binding TargetBtn, Mode=OneWay}"
Storyboard.TargetProperty="Width"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>

代码,

为窗口设置 DataContext, this.DataContext = this;
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// TargetBtn is a DP
TargetBtn = (Button)UC1.FindName("Btn1");
}

您也可以使用这种方法:

Dynamically changing TargetName ,在这里你应该改变 Target属性而不是 TargetName属性(property)。

关于wpf - 如何从另一个 View 在目标元素上使用 Storyboard ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36351429/

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