在Windows 8.1中如何在其他地方设置焦点时保持SettingsFlyout可见?

时间:2013-10-19 16:15:23

标签: c# xaml windows-runtime windows-8.1 flyout

在Windows 8.1中,当原生 SettingsFlyout 可见时,我点击其他位置,无论是在我的应用程序还是其他应用程序中,弹出按钮都会消失。

在手动关闭之前,有没有办法让它保持可见?我的用例 - 我想显示“登录”SettingsFlyout,当用户离开应用程序并搜索他的登录名和密码时,它不会消失。

我已经检查了MSDN pages,但没有找到“Sticky”弹出窗口的简单属性。

感谢任何提示!

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

没有办法使用默认API使SettingsFlyout像AppBar一样“粘滞”。实现您的场景的最佳方法是制作一个类似自定义的SettingsFlyout Popup; Callisto library实现one,你可以在Popup上关闭IsLightDismissEnabled以使其“粘滞”。