首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在c#/xaml中自定义settingflyout (Callisto),如何在settingflyout的顶部后退按钮按下时不显示默认设置窗格?

在c#/xaml中自定义settingflyout (Callisto),如何在settingflyout的顶部后退按钮按下时不显示默认设置窗格?
EN

Stack Overflow用户
提问于 2012-12-12 18:19:05
回答 2查看 1.3K关注 0票数 1

嗨,我在我的Windows8Metro应用中使用Callisto中的设置弹出按钮的方式是这样的:

代码语言:javascript
复制
  protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            SettingsPane.GetForCurrentView().CommandsRequested += MainPage_CommandsRequested;
        }

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            SettingsPane.Show();

        }



        void MainPage_CommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args)
        {
            SettingsCommand storage = new SettingsCommand("SettingsW", "Settings Wide", (x) =>
            {
                SettingsFlyout settings = new SettingsFlyout();
                settings.FlyoutWidth = Callisto.Controls.SettingsFlyout.SettingsFlyoutWidth.Wide;
                settings.HeaderText = "Settings Wide";

                settings.Content = new CallistoSettings.SettingsViews.SettingsWide();
                settings.IsOpen = true;
            });
            args.Request.ApplicationCommands.Add(storage);

            // Settings Narrow
            SettingsCommand settingsNarrow = new SettingsCommand("SettingsNarrow", "Settings Narrow", (x) =>
            {
                SettingsFlyout settings = new SettingsFlyout();
                settings.FlyoutWidth = Callisto.Controls.SettingsFlyout.SettingsFlyoutWidth.Narrow;
                settings.HeaderBrush = new SolidColorBrush(Colors.Orange);
                settings.Background = new SolidColorBrush(Colors.Gray);
                settings.HeaderText = "Settings Narrow";

                settings.Content = new CallistoSettings.SettingsViews.SettingsNarrow();
                settings.IsOpen = true;
            });
            args.Request.ApplicationCommands.Add(settingsNarrow);


            // About
            SettingsCommand about = new SettingsCommand("About", "About", (x) =>
            {
                SettingsFlyout settings = new SettingsFlyout();
                settings.FlyoutWidth = Callisto.Controls.SettingsFlyout.SettingsFlyoutWidth.Narrow;
                settings.HeaderText = "About";

                settings.Content = new CallistoSettings.SettingsViews.About();
                settings.IsOpen = true;
            });
            args.Request.ApplicationCommands.Add(about);
        }
    }

但我怀疑的是:

1)它打开我按下的所需弹出按钮,但在顶部有一个后退按钮,如果我按下它会打开设置窗格,但我不想打开设置窗格(如果用户按下设置弹出按钮顶部的后退按钮,设置弹出按钮应该被取消(就像我在设置窗格外按下时发生的方式一样(灯被取消))

我想要的是,在按下时,我应该得到设置弹出按钮,即使用户按下设置弹出后退按钮,它也应该关闭设置弹出按钮,而不是显示默认设置窗格。

请告诉我如何才能做到这一点。

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2012-12-12 23:28:21

如果你要显示按钮,那么它的行为应该和控件中的代码一样--用户会期望看到你现在看到的行为。如果你不想要这样的行为,为什么不干脆删除/禁用按钮呢?但是,您将再次与设计指南发生冲突,因为设计指南要求您应该拥有此控件。

这里的信息是,用户期望特定的行为,如果你的应用程序没有做他们期望的事情,可能会惹恼他们。

票数 0
EN

Stack Overflow用户

发布于 2015-11-23 19:51:11

请改用SettingsPane.ShowIndependent();

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13837535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档