2013-10-19 1 views
5

Windows 8.1의 경우 기본 설정 플라이 아웃이 표시되며 내 앱이나 다른 앱에서 다른 곳을 클릭하면 플라이 아웃이 사라집니다.Windows 8.1에서는 포커스가 다른 곳에 설정되어있을 때 SettingsFlyout을 표시하는 방법은 무엇입니까?

수동으로 해제 할 때까지 계속 볼 수있는 방법이 있습니까? 내 유스 케이스 - 사용자가 앱을 종료하고 로그인 이름과 비밀번호를 검색 할 때 사라지지 않는 "로그인"SettingsFlyout을 표시하려고합니다.

나는 MSDN pages을 확인했지만 "Sticky"플라이 아웃에 대한 간단한 속성을 발견하지 못했습니다.

어떤 힌트를 주셔서 감사합니다!

답변

1

기본 API를 사용하여 AppFar처럼 SettingsFlyout을 "고정"할 수있는 방법이 없습니다. 귀하의 시나리오를 달성하는 가장 좋은 방법은 사용자 정의 SettingsFlyout과 같은 팝업을 만드는 것입니다. Callisto libraryone을 구현하며 팝업에서 IsLightDismissEnabled를 해제하여 "고정"상태로 만들 수 있습니다.

+0

가리키고있는 Callisto 컨트롤에 OBSOLETE (더 이상 사용되지 않음)라고 표시되어 있습니다. Microsoft에서 제공하는 SettingsFlyout을 사용하는 것이 좋습니다. – vivekp

+1

그냥 SettingFlyout을 원하면 더 이상 사용되지 않습니다. SettingsFlyout과 비슷한 사용자 지정 컨트롤을 만들고 싶다면 시작하는 것이 좋습니다. –

6

SDK 내 기본 컨트롤과 함께 Callisto 라이브러리를 사용하지 않고도이를 수행하는 한 가지 방법이 있습니다.

public class CustomSettingsFlyout : SettingsFlyout 
{ 
    bool back = false; 
    private Popup popup; 
    public void ShowWindow() 
    { 
     ShowIndependent(); 
     back = false; 
     popup = (Parent as Popup); 
     popup.IsLightDismissEnabled = false; 
     popup.Closed += Popup_Closed; 
     this.BackClick += CustomSettingsFlyout_BackClick; 
    } 

    void CustomSettingsFlyout_BackClick(object sender, BackClickEventArgs e) 
    { 
     back = true; 
    } 

    private void Popup_Closed(object sender, object e) 
    { 
     if (!back) popup.IsOpen = true; 
    } 



} 

이제 ShowWindow 메서드를 호출하면 새 컨트롤에 ShowIndependent가 나타납니다.

CustomSettingsFlyout flyout = new CustomSettingsFlyout(); 
flyout.Content = new Grid(); 
flyout.ShowWindow(); 
+0

플라이 아웃이 잠깐 닫히고 처음으로 바깥을 클릭 할 때를 제외하고 이것은 저에게 효과적입니다. 그러나 이것은 브레이크 포인트를 입력 할 때 닫히기 때문에 플라이 아웃을 디버깅 할 때 매우 유용합니다. –

+0

@Shubhan - 코드 숨김없이 순수한 XAML을 사용하여 동일한 효과를 얻을 수 있습니까? – vivekp

+0

@ Shubhan - 앱이 다른 해상도의 2 개 화면 사이를 이동하면이 설정 플라이 아웃 UI가 엉망이됩니다. – vivekp

관련 문제