C# 如何以编程方式更改/替换模板中的故事板?
我花了很长时间才弄明白如何在我的WPF窗口中修改故事板的一个属性 “我的窗口”有一个动画,它通过一种“上卷”动画来缩小窗口的大小。根据某些条件(是否设置了某个道具),我们希望窗口稍微长一点,以容纳额外的物品 我一直在使用这个.FindResource()来获取元素,这没有问题。但当然,故事板是冻结的,其中包含的动画也是冻结的,所以我无法更改任何内容 所以我想,好吧,我会换掉整个故事板C# 如何以编程方式更改/替换模板中的故事板?,c#,wpf,xaml,storyboard,C#,Wpf,Xaml,Storyboard,我花了很长时间才弄明白如何在我的WPF窗口中修改故事板的一个属性 “我的窗口”有一个动画,它通过一种“上卷”动画来缩小窗口的大小。根据某些条件(是否设置了某个道具),我们希望窗口稍微长一点,以容纳额外的物品 我一直在使用这个.FindResource()来获取元素,这没有问题。但当然,故事板是冻结的,其中包含的动画也是冻结的,所以我无法更改任何内容 所以我想,好吧,我会换掉整个故事板 <Trigger Property="IsMouseOver" Value="True">
<Trigger Property="IsMouseOver" Value="True">
<Trigger.ExitActions>
<BeginStoryboard Storyboard="{StaticResource ToolbarCollapse_NoIB}" />
</Trigger.ExitActions>
</Trigger>
这就是我被困的地方。如何为该情节提要创建触发动作?构造函数和方法都不适用于此
这些课程的文档让我觉得我偏离了正轨
有谁能帮我使这种方法有效,或者给我提供另一种更有效的方法吗?我想出了一个使用替代方法的解决方案。看起来可能有点黑,但它是有效的 我创建了两个故事板,
ToolbarCollapse\u YesIB
和ToolbarCollapse\u NoIB
。它们仅在高度属性上有所不同
然后,我用两个多触发程序替换了上面原始问题的触发器:
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
<Condition Property="MinHeight"
Value="{StaticResource ToolbarCollapsedHeight_YesIB}"/>
</MultiTrigger.Conditions>
<MultiTrigger.ExitActions>
<BeginStoryboard Storyboard="{StaticResource ToolbarCollapse_YesIB}" />
</MultiTrigger.ExitActions>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
<Condition Property="MinHeight"
Value="{StaticResource ToolbarCollapsedHeight_NoIB}"/>
</MultiTrigger.Conditions>
<MultiTrigger.ExitActions>
<BeginStoryboard Storyboard="{StaticResource ToolbarCollapse_NoIB}" />
</MultiTrigger.ExitActions>
</MultiTrigger>
我使用对象的构造函数设置MinHeight
。根据我的IB字段的存在,我将MinHeight
设置为ToolbarCollapsedHeight\u YesIB
或\u NoIB
所以现在如果MinHeight=(我的YesIB大小)
,一个故事板是活动的。如果MinHeight=(我的NoIB大小)
,则另一个情节提要处于活动状态
(实际上,我有另一对ToolbarExpand\u YesIB/NoIB
模板,分配给上述触发器中的multi-trigger.entreactions
,但为了简洁起见,我省略了它们。)
这是一个真正的痛苦的屁股。我希望这能帮助其他发现类似情况的人。我用另一种方法想出了一个解决方案。看起来可能有点黑,但它是有效的 我创建了两个故事板,
ToolbarCollapse\u YesIB
和ToolbarCollapse\u NoIB
。它们仅在高度属性上有所不同
然后,我用两个多触发程序替换了上面原始问题的触发器:
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
<Condition Property="MinHeight"
Value="{StaticResource ToolbarCollapsedHeight_YesIB}"/>
</MultiTrigger.Conditions>
<MultiTrigger.ExitActions>
<BeginStoryboard Storyboard="{StaticResource ToolbarCollapse_YesIB}" />
</MultiTrigger.ExitActions>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
<Condition Property="MinHeight"
Value="{StaticResource ToolbarCollapsedHeight_NoIB}"/>
</MultiTrigger.Conditions>
<MultiTrigger.ExitActions>
<BeginStoryboard Storyboard="{StaticResource ToolbarCollapse_NoIB}" />
</MultiTrigger.ExitActions>
</MultiTrigger>
我使用对象的构造函数设置MinHeight
。根据我的IB字段的存在,我将MinHeight
设置为ToolbarCollapsedHeight\u YesIB
或\u NoIB
所以现在如果MinHeight=(我的YesIB大小)
,一个故事板是活动的。如果MinHeight=(我的NoIB大小)
,则另一个情节提要处于活动状态
(实际上,我有另一对ToolbarExpand\u YesIB/NoIB
模板,分配给上述触发器中的multi-trigger.entreactions
,但为了简洁起见,我省略了它们。)
这是一个真正的痛苦的屁股。我希望这能帮助其他发现类似情况的人