【发布时间】:2021-04-17 07:54:46
【问题描述】:
我需要创建一个外观可变但行为常见的UserControl。 IE。外观可以不同:Square、Polygon 或 Ellipse。但是控件需要能够为上述Square/Polygon/Ellipse设置动画(淡入淡出)。
我可以创建三个不同的控件并在每个控件中定义一个Storyboard,并将情节提要指向我的控件中的任何形状。但我只想定义一次故事板以遵循 DRY 原则。因此,我创建了一个没有此类内容的控件,并希望将情节提要指向它将包含的任何内容:
<UserControl x:Class="wpf_test.StarControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:wpf_test"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
<Storyboard x:Key="FadeInStoryboard">
<DoubleAnimation Storyboard.TargetName="?????"
Storyboard.TargetProperty="Opacity"
Duration="0:0:2"
From="0"
To="1"/>
</Storyboard>
<Storyboard x:Key="FadeOutStoryboard">
<DoubleAnimation Storyboard.TargetName="?????"
Storyboard.TargetProperty="Opacity"
Duration="0:0:2"
From="1"
To="0"/>
</Storyboard>
</UserControl.Resources>
</UserControl>
然后我可以将我需要的任何形状放入该控件中,例如使用Syle 和Template 设置器,但我的问题是我不知道如何将我的Storyboards 指向未来的形状,即在Storyboard.TargetName="?????" 中放入什么而不是问号。
【问题讨论】:
-
你尝试了用户控件上的名称吗?
-
动画用户控件本身的不透明度。
-
谢谢,安迪和 EldHasp。你的回答有帮助。我不知道这么简单。如果您想获得我的支持,请随时发布您的 cmets 作为答案。