【问题标题】:In Windows 8.1 how to keep SettingsFlyout visible when focus is set elsewhere?在 Windows 8.1 中,当焦点设置在其他地方时,如何保持 SettingsFlyout 可见?
【发布时间】:2013-10-28 09:21:56
【问题描述】:

在 Windows 8.1 中,当原生 SettingsFlyout 可见并且我在我的应用程序或其他应用程序中单击其他位置时,浮出控件会消失。

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

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

感谢任何提示!

【问题讨论】:

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


    【解决方案1】:

    有一种方法可以不使用带有 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();
    

    【讨论】:

    • 这对我有用,除了弹出窗口会短暂关闭,然后在您第一次在其外部单击时重新打开。但它在调试浮出控件时也非常有用,因为它们会在您输入断点时关闭。
    • @Shubhan - 我们可以通过使用没有代码隐藏的纯 XAML 来实现相同的目标吗?
    • @Shubhan - 当应用程序在不同分辨率的 2 个屏幕之间移动时,这些设置弹出 UI 会变得混乱。
    【解决方案2】:

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

    【讨论】:

    • 您指向的 Callisto 控件说已过时(并且已弃用)。它建议我们使用微软提供的 SettingsFlyout。
    • 如果您只想要一个 SettingsFlyout,它已被弃用。如果您想制作类似于 SettingsFlyout 的自定义控件,那么这是一个很好的起点。
    猜你喜欢
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 2015-03-08
    • 2017-05-10
    • 2021-10-30
    • 2011-01-27
    • 1970-01-01
    相关资源
    最近更新 更多