當屏幕方向改變我稱之爲:VisualStateManager GotoState函數不起作用
string CurrentViewState = ApplicationView.GetForCurrentView().Orientation.ToString();
// Trigger the Visual State Manager
bool success = VisualStateManager.GoToState(this, CurrentViewState, true);
在我的XAML中有一個簡單的網格(深在頁面的層次)
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Rectangle x:Name="rect_1" Grid.Column="0" Fill="Blue"></Rectangle>
<Rectangle x:Name="rect_2" Grid.Column="1" Fill="Red"></Rectangle>
<Rectangle x:Name="rect_3" Grid.Column="2" Fill="Green"></Rectangle>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="Landscape">
<Storyboard>
<ObjectAnimationUsingKeyFrames
Storyboard.TargetName="rect_1"
Storyboard.TargetProperty="Fill">
<DiscreteObjectKeyFrame KeyTime="0" Value="Brown"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Portrait">
<Storyboard>
<ObjectAnimationUsingKeyFrames
Storyboard.TargetName="rect_1"
Storyboard.TargetProperty="Fill">
<DiscreteObjectKeyFrame KeyTime="0" Value="Orange"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>
所以這是3簡單的矩形,但它們的顏色永遠不會改變。所有這些都是從這裏的教程中直接獲取的:http://msdn.microsoft.com/en-us/library/windows/apps/dn495655.aspx唯一的區別是我的網格不是頁面的頂層元素。 該問題可能是的
VisualStateManager.GoToState(this, CurrentViewState, true);
的第一個參數是「本」。但我不知道它應該是什麼,將它設置到網格或其中一個矩形是不允許的。
IList<VisualStateGroup> visualStateGroups = VisualStateManager.GetVisualStateGroups(this);
int count= visualStateGroups.Count;
數爲0
將您的VSM移動到您嘗試使用的元素上方,又名...將它移動到您的矩形之上,甚至可以高於您的列定義,就像它在tut中顯示的那樣。哦,並將「CurrentViewState」更改爲您正在切換的視覺狀態名稱... – 2014-12-04 20:54:46
不幸的是, – SPQR3 2014-12-04 20:58:32
您將currentviewstate更改爲喜歡縱向,但它沒有?猜猜我必須在一分鐘內真正閱讀你的整個事情。 – 2014-12-04 20:59:18