wpf - 有人可以教我如何阅读 Storyboard.TargetProperty 及其转换组吗?

标签 wpf wpf-controls

我是一个新手,正在查看这个示例 http://www.codeproject.com/Articles/199014/Page-Transition-Control-for-WPF

它有很多像这样的 Storyboard对象

<DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[1].(SkewTransform.AngleX)" To="100" Duration="0:0:.75" AccelerationRatio=".9" />

以及像这样的 TransformGroup

`<ScaleTransform 
  ScaleX="1" ScaleY="1" 
  CenterX="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualWidth, Converter={StaticResource centerConverter}}" 
    CenterY="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualHeight, Converter={StaticResource centerConverter}}" 
/>

<SkewTransform 
  AngleX="0" 
  AngleY="0" 
    CenterX="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualWidth, Converter={StaticResource centerConverter}}" 
    CenterY="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualHeight, Converter={StaticResource centerConverter}}" 
/>

<RotateTransform 
  Angle="0" 
    CenterX="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualWidth, Converter={StaticResource centerConverter}}" 
    CenterY="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualHeight, Converter={StaticResource centerConverter}}" 
/>
<TranslateTransform X="0" Y="0" />`

有人可以向我解释一下它是如何工作的吗,这太令人困惑了!我花了一整天的时间阅读Xaml和wpf书籍,但我仍然不明白。当我尝试通过简化代码来理解时,我不断收到如下错误:“[Unknown]”属性未指向路径“(RenderTransform).(0)[1].(1)”中的 DependencyObject

WPF真的那么难吗!?!?!?

最佳答案

如果您是 WPF 新手,动画可能不是最好的起点,但我会看看是否可以解释一下。

WPF 中有两种类型的“变换”,可用于修改 UI 对象的外观。

  • LayoutTransform 在 WPF 确定对象在屏幕上的布局方式后修改该对象
  • RenderTransform 在渲染到屏幕后修改对象

这两个属性都包含 transformations 的集合对象发生的情况:旋转缩放倾斜平移(向上/向下或向左/移动)右)

Animation是在特定时间段内将属性从一个值更改为另一个值的事物。例如,您可以在 1 秒内将对象的 Height 属性从 50 更改为 200,以使该对象在屏幕上明显变大。

您正在查看的代码是这些动画之一。

<DoubleAnimation 
    Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[1].(SkewTransform.AngleX)" 
    To="100" Duration="0:0:.75" AccelerationRatio=".9" />

标签名称告诉我们它是一个 DoubleAnimation,这意味着它正在修改 double 类型的属性。

TargetProperty 告诉我们它正在修改 RenderTransform 集合中的第二个对象(为了简化一点,RenderTransform.Children[1])

变换预计有一个 SkewTransform,并且动画设置为将 AngleX 属性从现在的值更改为 100 ,持续 0:0:.75

我不太熟悉 AccelerationRatio属性,但我相信它会修改值从起始值加速到最终值的速度。

关于wpf - 有人可以教我如何阅读 Storyboard.TargetProperty 及其转换组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14650702/

相关文章:

c# - 消息框按钮文本

c# - WPF重用XAML资源

wpf - 如何对同一元素应用多种效果

c# - WPF:从 viewModel 调用 View 中的方法

c# - WPF 用户控件的多个实例都使用相同的 ViewModel

c# - 什么时候调用 CanExecute?

.net - 测试 Wpf Control 实例化性能

c# - 如何处理 WPF 数据绑定(bind)菜单中的单击事件

GridViewColumn 中的 WPF 文本格式设置

c# - WPF:当 DependencyProperty 更改时运行代码