5

在 Windows 8.1 中,当本机SettingsFlyout可见并且我在我的应用程序或其他应用程序中单击其他地方时,弹出窗口消失了。

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

我已经检查了MSDN 页面,但没有找到“粘性”浮出控件的简单属性。

感谢您的任何提示!

4

2 回答 2

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();
于 2013-11-19T04:30:21.640 回答
1

无法使用默认 API 使 SettingsFlyout 像 AppBar 一样“粘滞”。实现您的方案的最佳方法是制作一个自定义的 SettingsFlyout-like Popup;Callisto 库实现了一个,您可以在 Popup 上关闭 IsLightDismissEnabled 以使其“粘性”。

于 2013-10-25T17:28:55.007 回答