我有一个 wPF 应用程序。我有一列在加载时将其宽度设置为零。它绑定(bind)到一个属性,当这个值更改为某个值时,宽度更改为 2*。这一切都很好。
我想要的是添加一个动画,使列滑到网格上。它是最右边的列,因此它会从屏幕右侧滑动到左侧。仔细阅读它听起来好像这在 XAML 中不容易完成?
编辑
这是我到目前为止尝试过的方法。问题是“System.Windows.Media.Animation.DoubleAnimation”动画对象不能用于动画属性“Width”,因为它是不兼容的类型 System.Windows.GridLength”。是否存在值(value)转换器?
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="*"/>
<ColumnDefinition>
<ColumnDefinition.Style>
<Style TargetType="{x:Type ColumnDefinition}">
<Setter Property="Width" Value="10"/>
<Style.Triggers>
<DataTrigger Binding="{Binding OrderSelected.Name}" Value="Mark">
<Setter Property="Width" Value="2*"/>
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="Width"
Duration="0:0:3"
AutoReverse="True"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</ColumnDefinition.Style>
</ColumnDefinition>
</Grid.ColumnDefinitions>
最佳答案
ColumnDefinition
的Width
具有 GridLength 类型,因此不能使用 DoubleAnimation 对其进行动画处理。唯一的解决方案是定义一个自定义动画类。
我发现的第一个谷歌结果是:http://www.codeproject.com/Articles/18379/WPF-Tutorial-Part-2-Writing-a-custom-animation-cla本文给出了 Button 的示例,但代码也应该适用于 ColumnDefinition。
关于c# - WPF 使列滑入位置 XAML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20517225/