wpf中让控件进行移动的动画

按下button后,让一个border的位置进行动画宽度与高度的动画已经会了,但是移动的动画不知道怎么做如让border的left从100到200注:需要C#代码... 按下button后,让一个border的位置进行动画
宽度与高度的动画已经会了,但是移动的动画不知道怎么做
如让border的left从100到200
注:需要C#代码
展开
 我来答
Yeshirow
推荐于2017-11-24 · TA获得超过340个赞
知道小有建树答主
回答量:74
采纳率:0%
帮助的人:139万
展开全部
Border 自身没有 Left 属性, 要描述一个 border 相对于它父窗口(Parent container) 的偏移量, 可以通过其 Margin 属性描述(Margin 是 一个 Thickness 类型的变量), 或通过父容器的附加属性来描述(例如 Canvas.left).

并非所有父容器都提供位置偏移支持, 因此, 使用 margin 来表示其位置偏移是比较好的, 下面是一个例子 (保存为一份 xaml 文档, 在 ie 中打开即可, 例子中, 单击按钮产生 上偏移的动画, 点击铵钮右键产生左偏移动画):
<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<Border Width="200" Height="200" Background="red" Name="bdr"/>
<Button Content="abc">
<Button.Triggers>
<EventTrigger RoutedEvent="Button.MouseRightButtonUp">
<EventTrigger.Actions>
<BeginStoryboard Name="sb1">
<Storyboard>
<ThicknessAnimation From="0,0,0,0" To="100,0,0,0" Storyboard.TargetName="bdr" Storyboard.TargetProperty="Margin"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="ButtonBase.Click">
<EventTrigger.Actions>
<BeginStoryboard Name="sb2">
<Storyboard>
<ThicknessAnimation From="0,0,0,0" To="0,100,0,0" Storyboard.TargetName="bdr" Storyboard.TargetProperty="Margin"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Button.Triggers>
</Button>
</Canvas>

当然, 如果父容器提供了位置偏移的附加属性, 也可以利用(如 Canvas 提供了 Left, Top 等来描述其子元素的位置偏移), 下面也是一个例子(保存为 xaml 文档, 在 ie 中打开也可以了, 例子中, 单击按钮产生 上偏移的动画, 点击铵钮右键产生左偏移动画):
<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<Border Width="200" Height="200" Background="red" Name="bdr"/>
<Button Content="abc">
<Button.Triggers>
<EventTrigger RoutedEvent="Button.MouseRightButtonUp">
<EventTrigger.Actions>
<BeginStoryboard Name="sb1">
<Storyboard>
<DoubleAnimation From="0" To="100" Storyboard.TargetName="bdr" Storyboard.TargetProperty="(Canvas.Top)"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="ButtonBase.Click">
<EventTrigger.Actions>
<BeginStoryboard Name="sb2">
<Storyboard>
<DoubleAnimation From="0" To="100" Storyboard.TargetName="bdr" Storyboard.TargetProperty="(Canvas.Left)" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Button.Triggers>
</Button>
</Canvas>

-------------
至于另一个需求 --- 需要 C# 代码, 其实也不难实现, 设置 Margin 的话, 直接就是 bdr.Margin=new Thickness(......)
设置 Canvas.Left 附加属性的就是 bdr.SetValue(Canvas.LeftProperty, yourNewValue);
适当将 xaml 的内容转换为 C# 就可以了
堵雅云qY
2011-12-24 · TA获得超过2336个赞
知道大有可为答主
回答量:5847
采纳率:0%
帮助的人:2209万
展开全部
WPF的控件分几种,要根据情况来删除。
如果是Border中的控件要被删除,需要将Border.Child设置为null——因为Border这类控件内部只能容纳一个内嵌控件。
而如果是Grid/StackPanel/DockPanel/Canvas等面板,因为这类控件内部可以同时嵌入多个子级控件,因此,要删除其中的子级控件得用类似Grid.Children.RemoveAt()或RemoveAt()这类的办法。
而TabControl之类的Item容器则需要调用类似tabControl.Items.Remove()或RemoveAt()之类的方法才能删除一个Tab页。
================================
——总之,要删除某个控件,需要先看看它在什么样的容器控件中,然后调用相应的方法。
追问
不是要删除,是移动,是对某个控件进行移动的动画
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式