wpf中移动控件的动画
并非所有的父容器都提供位置偏移量支持,因此,最好使用margin来表示它们的位置偏移量。下面是一个例子(只需保存为xaml文档,在ie中打开即可。在示例中,单击按钮生成向上偏移动画,右键单击铵按钮生成向左偏移动画):
& ltcanvas xmlns = "/winfx/2006/xaml/presentation " & gt;
& ltborder Width = " 200 " Height = " 200 " Background = " red " Name = " BDR "/& gt;
& ltButton Content="abc " >
& lt按钮。触发器& gt
& ltevent trigger routed event = " Button。MouseRightButtonUp " & gt
& lt事件触发器。动作& gt
& ltBeginStoryboard Name="sb1 " >
& lt故事板& gt
& ltThicknessAnimation From="0,0,0,0" To="100,0,0,0 "故事板。TargetName="bdr "故事板。TargetProperty="Margin"/>。
& lt/story board & gt;
& lt/BeginStoryboard & gt;
& lt/EventTrigger动作& gt
& lt/event trigger & gt;
& ltevent trigger routed event = " button base。单击" >;
& lt事件触发器。动作& gt
& ltBeginStoryboard Name="sb2 " >
& lt故事板& gt
& ltThicknessAnimation From="0,0,0,0" To="0,100,0,0 "故事板。TargetName="bdr "故事板。TargetProperty="Margin"/>。
& lt/story board & gt;
& lt/BeginStoryboard & gt;
& lt/EventTrigger动作& gt
& lt/event trigger & gt;
& lt/按钮。触发器& gt
& lt/Button & gt;
& lt/Canvas & gt;
当然,如果父容器提供了位置偏移的附加属性,也可以使用(比如Canvas提供了Left、Top等。描述其子元素的位置偏移)。下面也是一个例子(另存为xaml文档,在ie中打开。示例中点击按钮生成上偏动画,右键铵按钮生成左偏动画):
& ltcanvas xmlns = "/winfx/2006/xaml/presentation " & gt;
& ltborder Width = " 200 " Height = " 200 " Background = " red " Name = " BDR "/& gt;
& ltButton Content="abc " >
& lt按钮。触发器& gt
& ltevent trigger routed event = " Button。MouseRightButtonUp " & gt
& lt事件触发器。动作& gt
& ltBeginStoryboard Name="sb1 " >
& lt故事板& gt
& ltdouble animation From = " 0 " To = " 100 "故事板。TargetName="bdr "故事板。TargetProperty="(Canvas。top)"/>;
& lt/story board & gt;
& lt/BeginStoryboard & gt;
& lt/EventTrigger动作& gt
& lt/event trigger & gt;
& ltevent trigger routed event = " button base。单击" >;
& lt事件触发器。动作& gt
& ltBeginStoryboard Name="sb2 " >
& lt故事板& gt
& ltdouble animation From = " 0 " To = " 100 "故事板。TargetName="bdr "故事板。TargetProperty="(Canvas。left)"/>;
& lt/story board & gt;
& lt/BeginStoryboard & gt;
& lt/EventTrigger动作& gt
& lt/event trigger & gt;
& lt/按钮。触发器& gt
& lt/Button & gt;
& lt/Canvas & gt;
-
至于另一个需求——对C#代码的需求,其实也不难实现。如果设置了Margin,则直接为bdr。边距=新厚度(...).
设置画布的附加属性。左为BDR . setvalue(canvas . left property,你的新值);
只需将xaml的内容转换成C#