Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Windows 8.1中,当焦点设置在其他位置时,如何保持设置不可见?_C#_Xaml_Windows Runtime_Windows 8.1_Flyout - Fatal编程技术网

C# 在Windows 8.1中,当焦点设置在其他位置时,如何保持设置不可见?

C# 在Windows 8.1中,当焦点设置在其他位置时,如何保持设置不可见?,c#,xaml,windows-runtime,windows-8.1,flyout,C#,Xaml,Windows Runtime,Windows 8.1,Flyout,在Windows 8.1中,当本机设置flyout可见,并且我在我的应用程序或其他应用程序中单击其他位置时,弹出按钮消失 有没有办法让它保持可见,直到我手动关闭它?我的用例-我想显示“登录”设置,但当用户离开应用程序并搜索其登录名和密码时,该设置不会消失 我已经检查了它,但没有找到“Sticky”弹出按钮的简单属性 谢谢你的提示 无法使用默认API使设置像AppBar一样“粘性”。实现您的场景的最佳方法是定制一个类似弹出窗口的设置;工具,您可以在弹出窗口上关闭IsLightDismissEnab

在Windows 8.1中,当本机设置flyout可见,并且我在我的应用程序或其他应用程序中单击其他位置时,弹出按钮消失

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

我已经检查了它,但没有找到“Sticky”弹出按钮的简单属性


谢谢你的提示

无法使用默认API使设置像AppBar一样“粘性”。实现您的场景的最佳方法是定制一个类似弹出窗口的设置;工具,您可以在弹出窗口上关闭IsLightDismissEnabled以使其“粘滞”

有一种方法可以做到这一点,而无需将Callisto库与SDK中的默认控件一起使用

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-当应用程序在两个不同分辨率的屏幕之间移动时,这些设置弹出按钮的UI会变得混乱。您指向的Callisto控件显示已过时(并且不推荐使用)。它建议我们使用Microsoft提供的SettingsFlyot。如果您只需要SettingsFlyot,则不推荐使用它。如果您希望创建与SettingsFlyot类似的自定义控件,则这是一个很好的起点。