C# 在自定义控件中找不到子控件的名称
我在.NET4.7.2中使用WPF4.5.2C#7 我想通过代码添加带有故事板动画的EventTrigger。 在Xaml中,它看起来是这样的(经过测试,工作正常) 创建EventTrigger工作正常,但调用会引发此错误 在MyNameSpace.MyCustomControl的命名空间中找不到名称“PART_Viewport”C# 在自定义控件中找不到子控件的名称,c#,wpf,custom-controls,C#,Wpf,Custom Controls,我在.NET4.7.2中使用WPF4.5.2C#7 我想通过代码添加带有故事板动画的EventTrigger。 在Xaml中,它看起来是这样的(经过测试,工作正常) 创建EventTrigger工作正常,但调用会引发此错误 在MyNameSpace.MyCustomControl的命名空间中找不到名称“PART_Viewport” 我做错了什么?您应该在情节提要子对象中添加对象: StoryBoardObject.Children.Add(objectAnimationUsingKeyFrame
我做错了什么?您应该在情节提要子对象中添加对象:
StoryBoardObject.Children.Add(objectAnimationUsingKeyFrames);
我还没有理解你例子中的每一个细节,但我已经设法产生了一个非常类似的错误 我定义了一个名为vp3d的自定义控件,带有一个路由事件点击。在使用自定义控件的地方,我指定了一个事件处理程序,如下所示:
<cc:vp3d Grid.Row="2">
<cc:vp3d.Triggers>
<EventTrigger RoutedEvent="cc:vp3d.Tap">
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_Viewport" Storyboard.TargetProperty="Visibility">
<!-- ... -->
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</cc:vp3d.Triggers>
</cc:vp3d>
这是基于中的一个想法。如果这对您不起作用,该线程中的其他答案可能会有所帮助。谢谢您的答案,我稍后会这样做,我只是没有显示该行,因为在将关键帧添加到情节提要时不会出现错误。当创建Eventtrigger时,不会抛出错误,但会调用它并运行动画。An会很有帮助。您究竟在哪里调用
故事板。SetTargetName
?请查看原始帖子。谢谢Phil,我没有调用RegisterName,这导致了错误。var vp=GetTemplateChild(“零件视口”)作为Viewport3D;RegisterName(“PART_视口”,vp)。是相关的线路吗
StoryBoardObject.Children.Add(objectAnimationUsingKeyFrames);
<cc:vp3d Grid.Row="2">
<cc:vp3d.Triggers>
<EventTrigger RoutedEvent="cc:vp3d.Tap">
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_Viewport" Storyboard.TargetProperty="Visibility">
<!-- ... -->
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</cc:vp3d.Triggers>
</cc:vp3d>
public override void OnApplyTemplate ( )
{
base.OnApplyTemplate ();
var vp = GetTemplateChild ("PART_Viewport") as Viewport3D;
RegisterName ("PART_Viewport", vp ) ;
}