2012-12-05 2 views
2

작은 문제가 있습니다. 빠르게 다음을 수행하여 복제 할 수 있습니다 : Windows 8 - 캐시 된 페이지 버튼 비주얼 상태가 뒤로 돌아갈 때 변경되지 않음

새 프로젝트> 윈도우 스토어> 빈 응용 프로그램 (XAML)

그리드에 버튼을 추가합니다. 이것은 기본 스타일에도 적용됩니다. 다른 페이지를 만들

private void ButtonBase_OnClick(object sender, RoutedEventArgs e) 
{ 
    Frame.Navigate(typeof (Page2));    
} 

옆에있는 버튼을 추가하고, MainPage에 다시 이동합니다

<Button Click="Click" Style="{StaticResource TextButtonStyle}" Content="Page 2"/> 

파일 뒤에 코드에 기능을 추가 : (주 TextButtonStyle는 SimpleStyles.xaml에 정의되어 있습니다) Click 이벤트.

다음 세트는 모두 NavigationCacheMode="Enabled"입니다. 편의상 버튼 중 하나를 왼쪽 정렬하고 다른 하나는 오른쪽으로 설정하십시오.

앱을 실행합니다. 마우스를 단추 위로 이동하십시오. 이를 반영하여 상태가 변경됩니다. 버튼을 클릭하십시오. 다시 색상이 바뀝니다. 두 번째 페이지에서도 마찬가지입니다. 첫 페이지로 돌아 가면 버튼에 PointerExited 이벤트가 없었기 때문에 버튼은 여전히 ​​"Pointer Over"시각 상태입니다.

어떻게 해결할 수 있습니까? VisualStateMananger.GoToState()가 작동하지 않습니다.

답변

2

비슷한 문제가 발생했습니다. 컨트롤을 숨기면 상태가 '재설정'된 것으로 나타났습니다.

void GridView_ItemClick(object sender, ItemClickEventArgs e) 
{ 
    var ctrl = this.ItemContainerGenerator.ContainerFromItem(e.ClickedItem); 
    ((Control)ctrl).Visibility = Visibility.Collapsed; 
    ((Control)ctrl).Visibility = Visibility.Visible; 
} 

은 아마 다음과 같은 (이 테스트하지 않았다) 할을 시도 할 수 있습니다 :

private void ButtonBase_OnClick(object sender, RoutedEventArgs e) 
{ 
    ((Control)sender).Visibility = Visibility.Collapsed; 
    ((Control)sender).Visibility = Visibility.Visible; 
    Frame.Navigate(typeof (Page2));    
} 
우리는 더러운 방법으로 그것을 해결
관련 문제