gpt4 book ai didi

c# - 在 EventTrigger 中为 Storyboard 分配 TargetName

转载 作者:太空宇宙 更新时间:2023-11-03 16:39:03 25 4
gpt4 key购买 nike

我正在尝试使用 XAML 在 WPF 中为 ScrollViewer 设置皮肤,但遇到了挑战。通常我的滚动条是隐藏的,但当用户开始平移屏幕时,它们就会变得可见。我已经使用 ScrollChanged 实现了这个功能,如下所示:

<!-- Storyboards -->
<Storyboard x:Key="uiStoryboardFader">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)">
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1.0" />
<EasingDoubleKeyFrame KeyTime="0:0:2.0" Value="1.0" />
<EasingDoubleKeyFrame KeyTime="0:0:2.3" Value="0.0" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>

<!-- Style Declaration -->
<!-- Control Template -->

<ScrollBar x:Name="PART_VerticalScrollBar" Opacity="0.0" />
<ScrollBar x:Name="PART_HorizontalScrollBar" Opacity="0.0" />

<!-- Control Template Triggers -->

<EventTrigger RoutedEvent="ScrollViewer.ScrollChanged">
<BeginStoryboard Storyboard="{StaticResource uiStoryboardFader}"
Storyboard.TargetName="PART_VerticalScrollBar" />
<BeginStoryboard Storyboard="{StaticResource uiStoryboardFader}"
Storyboard.TargetName="PART_HorizontalScrollBar" />
</EventTrigger>

<!-- Closing -->

这样做是改变整个 ScrollViewer 的不透明度,即使我将 TargetName 设置为“PART_VerticalScrollBar”和“PART_Horizo​​ntalScrollBar”。但是,当我在 Storyboard 声明中手动设置 TargetName 时,一切都按预期进行。无论如何,我可以通过在 BeginStoryboard 中分配 TargetName 来完成这项工作吗?

最佳答案

我想你只是不想复制粘贴动画?您尝试做的事情可能永远不会成功,该属性的值不会被继承,而且您无论如何都需要两个 Storyboard,您不能两次启动同一个 Storyboard(更不用说在不同的控件上了)。

这是您至少可以保留一个动画实例的方法:

<DoubleAnimationUsingKeyFrames x:Key="Animation"
Storyboard.TargetProperty="(UIElement.Opacity)">
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1.0" />
<EasingDoubleKeyFrame KeyTime="0:0:2.0" Value="1.0" />
<EasingDoubleKeyFrame KeyTime="0:0:2.3" Value="0.0" />
</DoubleAnimationUsingKeyFrames>
<!-- ... -->
<EventTrigger RoutedEvent="ScrollViewer.ScrollChanged">
<BeginStoryboard>
<Storyboard Storyboard.TargetName="PART_VerticalScrollBar">
<StaticResourceExtension ResourceKey="Animation" />
</Storyboard>
</BeginStoryboard>
<BeginStoryboard>
<Storyboard Storyboard.TargetName="PART_HorizontalScrollBar">
<StaticResourceExtension ResourceKey="Animation" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>

关于c# - 在 EventTrigger 中为 Storyboard 分配 TargetName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8209104/

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