【发布时间】:2010-12-07 23:26:41
【问题描述】:
我们正在编写一个基于 Prism 的 Silverlight 应用程序,并且我们在不同的模块中有一大堆页面。
页面之间的转换是通过导航事件处理的,每个模块都实现了以下方法来在导航到时显示页面并在导航到时隐藏页面:
public void Show()
{
VisualStateManager.GoToState(this, "ShowState", true);
}
public void Hide()
{
VisualStateManager.GoToState(this, "HideState", true);
}
目前每个模块的 XAML 文件中都定义了“ShowState”和“HideState”,因此重复了太多次。
<Grid x:Name="LayoutRoot">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="VisualStates">
<VisualState x:Name="ShowState">
...
</VisualState>
<VisualState x:Name="HideState">
...
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
其中... 代表每个转换的Storyboard。
我刚刚在Storyboard 定义中发现了一个错误,目前我将不得不在所有文件中复制修复程序。如果Storyboard 的定义只有一个可以在每个文件中引用,那就更好了。
我整个上午都在寻找正确的语法,但一直没有运气。
如何在所有 XAML 文件之间共享此 VisualStateManager?
【问题讨论】:
-
您似乎想将“行为”封装在自定义控件中。这样,您只需根据需要重用控件,它将封装您的 Storyboard,从而提供一个参考点来解决出现的问题。我的猜测是这类似于扩展器之类的东西;为该容器内的任何孩子提供通用的功能。
标签: silverlight resources visualstatemanager