如何在WPF中为自定义类应用动画?

时间:2014-01-13 13:40:08

标签: c# wpf animation 3d

我正在开发使用SharpDX的.NET应用程序(用于C#的DirectX包装器)。另外我正在实现WPF接口(在XAML中)。比方说,我想在我的app中定义特定3D模型的旋转角度:

<dx3d:DxGeometryModel3D.Transform>
    <dx3d:DxTransform3DGroup>
        <dx3d:DxTransform3DGroup.Children>                                
            <dx3d:DxRotateTransform3D>
                <dx3d:DxRotateTransform3D.Rotation>
                    <AxisAngleRotation3D Angle="30" />
                </dx3d:DxRotateTransform3D.Rotation>
            </dx3d:DxRotateTransform3D>                         
        </dx3d:DxTransform3DGroup.Children>
    </dx3d:DxTransform3DGroup>
</dx3d:DxGeometryModel3D.Transform>

正如你所看到的,我有自己的类(DxGeometryModel3D而不是WPF中的GeometryModel3D),在里面,我创建了更常用的依赖属性。现在,我想创建简单的动画,这将改变Angle属性。在WPF中,它就像下面(我想以类似的方式做到):

<AxisAngleRotation3D Angle="30">
    <AxisAngleRotation3D.Triggers>
        // animation defined here
    </AxisAngleRotation3D.Triggers>
</AxisAngleRotation3D>

换句话说:我如何附加到我的类Triggers属性?

1 个答案:

答案 0 :(得分:2)

正如@MarioStoilov在评论中暗示的那样,您的自定义类具有Triggers属性。这是因为在您的类当前扩展的Triggers类中定义了熟悉的DependencyObject属性 。添加此属性(将按预期工作)的最简单方法是扩展定义此属性的FrameworkElement类,而不是DependencyObject类(而不是UIElement上课@MarioStoilov)。

您可以在MSDN上的FrameworkElement Class页面上找到有关FrameworkElement班级的更多信息。