【发布时间】:2015-08-26 15:01:21
【问题描述】:
我有一个带有 MainPage.xaml 的通用 Windows 应用程序,该应用程序具有以下代码。 VisualStateManager 的 GoToState 不起作用。什么都没有发生。
public MainPage()
{
...
VisualStateManager.GoToState(BottomToolBar.WifiButton, "Checked", false);
}
BottomToolBar 是一个用户控件,它有一个带有 x:Name="WifiBtn" 的 ToggleButton。这是此用户控件的代码隐藏:
public sealed partial class BottomToolBar : UserControl
{
public BottomToolBar()
{
this.InitializeComponent();
}
private void WifiBtn_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
var parentPage = GetParentsPage(this);
if(parentPage != null)
{
parentPage.MapItemsManager.ToggleActivate(MapItemsType.ISF);
}
}
public ContentControl WifiButton
{
get
{
return WifiBtn;
}
}
...
}
如您所见,我有一个名为 WifiButton 的公共属性,它返回一个 ContentControl(您不能返回一个 ToggleButton)。
在 App.xaml 中,我有一个应用程序资源,它设置了 ToggleButton 的样式,由此 VisualState“已检查”更改了 ToggleButton 的不透明度。比如:
<Application.Resources>
<Style x:Key="BottomToggleButtonStyle" TargetType="ToggleButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Grid x:Name="RootGrid" Background="{TemplateBinding Background}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Checked">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="RootGrid">
<DiscreteObjectKeyFrame KeyTime="0" Value="1"/>
</ObjectAnimationUsingKeyFrames>
<PointerUpThemeAnimation Storyboard.TargetName="RootGrid"/>
</Storyboard>
</VisualState>
我认为我已经准备好让 GoToState 调用正常工作。目标是在应用程序启动时将切换按钮的不透明度初始化为 0.5。换句话说,在 MainPage 构造函数中。但是当我运行该应用程序时,未设置不透明度。这条线似乎被完全忽略了。 我在 SO 中发现了其他类似的线程,它们有同样的问题,但几乎没有答案。
【问题讨论】:
标签: c# xaml win-universal-app