WPF中如何使用属性值作为动画的起始值与终止值??

出于某种需要,我创建了一个名为MyToggleButton的,继承自ToggleButton的自定义控件,并且创建了两个依赖属性:LHeight与MHeight。其控件模... 出于某种需要,我创建了一个名为MyToggleButton的,继承自ToggleButton的自定义控件,并且创建了两个依赖属性:LHeight与MHeight。
其控件模板下只有一个border:
<Border x:Name="I" Background="Black" Height="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type local:MyToggleButton}},Path=MHeight}"></Border>
而对这个border,我设置了它的VisualState的时候,在CheckStates中:
<VisualState x:Name="Checked">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="I"
Storyboard.TargetProperty="Height"
To="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type local:MyToggleButton}},
Path=MHeight}“>
</Storyboard>
</VisualState>
但这样之后状态改变时并不能够实现我需要的效果,即:当状态切换的时候,border的Height值在LHeight与MHeight中以动画的形式切换。
但另一方面而言,VisualState并非不支持绑定值,因为在同一个项目的另外一个地方,我将动画的终值绑定到了某个资源的某属性中,并且获得了成功。
那为什么在这里就不成功了呢?或者我犯了什么错误?还有就是如何解决这一个问题?
展开
 我来答
szlproche
2014-02-07 · TA获得超过654个赞
知道小有建树答主
回答量:396
采纳率:50%
帮助的人:208万
展开全部
你把VisualState换成Trigger试试。
更多追问追答
追问
1、不行!我要求的是动画,Trigger不支持启动故事版!
2、即使eventtrigger也不行!它会报错,不能够冻结此故事版供线程调用!
追答

怎么会不行呢?以下XAML能正常编译,但由于不知道你的控件具体内容无法测试:

 <ControlTemplate.Triggers>
       <Trigger Property="IsChecked" Value="True">
             <Trigger.EnterActions>
                   <BeginStoryboard >
                          <Storyboard TargetName="I" TargetProperty="Height" >
                                    <DoubleAnimation To="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:MyToggleButton}}, Path=MHeight}"/>
                           </Storyboard>
                   </BeginStoryboard>
            </Trigger.EnterActions>
      </Trigger>
</ControlTemplate.Triggers>
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式