首页 > 解决方案 > 如果用户单击屏幕上的其他位置,如何隐藏堆栈布局

问题描述

我在 App.xaml 文件中为应用程序头创建了 ResourceDictionary。在标题中,我创建了两个下拉菜单(带有堆栈布局和网格)。第一个是一些用户信息,第二个是搜索。默认情况下,这些下拉菜单是隐藏的。如果用户单击用户图标或搜索图标,则最多可以看到一个。所以在 HeaderViewModel 我 cratet 这两种方法:

private async void AccountInformationAsync()
        {
            var userService = await UserService.GetUserData();
            Username = userService.Username;
            DisplayName = userService.DisplayName;
            Status = userService.Status;
            Influence = userService.Influence;
            MTP = userService.MTP;

            VisibilityInformation = !VisibilityInformation;
            if (VisibilityInformation == true)
            {
                VisibilitySearch = false;
            }
        }

        private void Search()
        {
            VisibilitySearch = !VisibilitySearch;
            if (VisibilitySearch == true)
            {
                VisibilityInformation = false;
            }
        }

这工作正常...如果用户单击用户图标用户信息将显示,如果用户然后单击 serach 图标信息将隐藏搜索菜单将显示。

所以,我的问题是如果用户单击屏幕上的其他位置,如何隐藏这些菜单中的任何一个?

标签: xamlxamarin.forms

解决方案


您需要在页面的主布局视图上添加一个 TapGestureRecognizer。在它的点击上,您可以使用命令和隐藏下拉菜单。

    private void HideDropDowns()
    {
        VisibilitySearch = false;
        VisibilityInformation = false;
    }

HideDropDowns 应该是 TapGestureRecognizer 中分配给 Command 的 Method。


推荐阅读