【发布时间】:2019-02-04 09:46:22
【问题描述】:
我在 .Net 4.7.2 中使用 WPF 4.5.2 C# 7
我想通过代码添加一个带有 StoryBoard 动画的 EventTrigger。 在 Xaml 中,它看起来像这样(经过测试,可以正常工作)
<!-- in the control template -->
<Viewport3D x:Name="PART_Viewport" Visibility="Hidden" Width="Auto" Height="Auto">
<!-- ... -->
</ViewPort>
<!-- in the trigger -->
<EventTrigger RoutedEvent="local:MyCustomControl.MyEvent">
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_Viewport" Storyboard.TargetProperty="Visibility">
<!-- ... -->
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
在自定义控件类中是这样的
public override void OnApplyTemplate()
{
DiscreteObjectKeyFrame frameStart = new DiscreteObjectKeyFrame() { KeyTime = new TimeSpan( 0 , 0 , 0 ) , Value = Visibility.Visible , };
DiscreteObjectKeyFrame frameEnd = new DiscreteObjectKeyFrame() { KeyTime = new TimeSpan( 0 , 0 , 0 , 1 , 100 ) , Value = Visibility.Hidden , };
ObjectAnimationUsingKeyFrames objectAnimationUsingKeyFrames = new ObjectAnimationUsingKeyFrames()
{
Name = "PART_ViewPort"
};
Storyboard.SetTargetName( objectAnimationUsingKeyFrames , "PART_Viewport" );
Storyboard.SetTargetProperty( objectAnimationUsingKeyFrames , new PropertyPath( "Visibility" ) );
objectAnimationUsingKeyFrames.KeyFrames.Add( frameStart );
objectAnimationUsingKeyFrames.KeyFrames.Add( frameEnd );
}
创建 EventTrigger 工作正常,但调用会引发此错误 "在 MyNameSpace.MyCustomControl 的命名空间中找不到名称 "PART_Viewport""
我做错了什么?
【问题讨论】:
-
MCVE 会很有帮助。
-
你在哪里打电话给
Storyboard.SetTargetName? -
请看原帖。
标签: c# wpf custom-controls