Zdefiniowałem następujące dwa stany w Wyrażenie mieszania. Próbowałem postępować zgodnie z przewodnikiem this, ale mam wrażenie, że pozostawia mnie w zawieszeniu, gdy potrzebuję informacji o tym, jak i kiedy zmienić stan.Jak zmienić VisualState w WP7
Według instrukcji mam dołączyć zachowanie (zakładam "GotoState") do mojego UserControl
- Niestety nie sądzę I rzeczywiście mają User Control
- a nawet gdybym to zrobił, byłbym muszę dołączyć zachowanie zarówno do mojego PortraitState
i mojego LandscapeState
?
Wygląda na to, że mogę dołączyć element GotoState
do mojego elementu LayoutRoot
. Więc czy przywiązuję moje zachowanie do tego w obu stanach? Każda pomoc będzie bardzo ceniona.
* edit: Grałem w moim pliku xaml.cs i stwierdziłem, że może to być sposób na programowanie. podczas debugowania i zmiany orientacji wchodzę do obudowy przełącznika i znajduję właściwą orientację. Stan jednak nigdy się nie zmienia. Co ja robię źle?
protected override void OnOrientationChanged(OrientationChangedEventArgs e)
{
switch (e.Orientation)
{
case PageOrientation.Landscape:
ExtendedVisualStateManager.GoToElementState(root:this.LayoutRoot, stateName: "LandscapeState", useTransitions: true);
break;
case PageOrientation.LandscapeRight:
ExtendedVisualStateManager.GoToElementState(root:this.LayoutRoot, stateName: "LandscapeState", useTransitions: true);
break;
case PageOrientation.LandscapeLeft:
ExtendedVisualStateManager.GoToElementState(root:LayoutRoot, stateName: "LandscapeState", useTransitions: true);
break;
case PageOrientation.Portrait:
ExtendedVisualStateManager.GoToElementState(root:this.LayoutRoot, stateName: "PortraitState", useTransitions: true);
break;
case PageOrientation.PortraitUp:
ExtendedVisualStateManager.GoToElementState(root:this.LayoutRoot, stateName: "PortraitState", useTransitions: true);
break;
case PageOrientation.PortraitDown:
ExtendedVisualStateManager.GoToElementState(root:this.LayoutRoot, stateName: "PortraitState", useTransitions: true);
break;
default:
break;
}
}
Edit2: Przy próbie powyższym wydaje się, że GotoElementState zwraca false i zgodnie z MSDN: „Zwraca true, jeśli kontrola powodzeniem przeniesione do nowego stanu, w przeciwnym razie false”
Teraz pozostaje mi pytanie: co może spowodować, że moje przejście na stan się nie powiedzie?