Windows 8 如何使用C查看**winrt**应用程序中的特定设置页面?

Windows 8 如何使用C查看**winrt**应用程序中的特定设置页面?,windows-8,microsoft-metro,windows-runtime,Windows 8,Microsoft Metro,Windows Runtime,如何使用C从外部按钮单击查看winrt应用程序中的特定设置页 在javascript中,我发现类似于WinJS.UI.setingsflyout.showSettingsAbout,/Settings/About.html 但是我在c中找不到这个,我正在使用callisto设置弹出按钮第一步是在要显示设置的页面的设置面板上添加CommandsRequest事件的侦听器。例如: SettingsPane.GetForCurrentView().CommandsRequested += MainPa

如何使用C从外部按钮单击查看winrt应用程序中的特定设置页

在javascript中,我发现类似于WinJS.UI.setingsflyout.showSettingsAbout,/Settings/About.html


但是我在c中找不到这个,我正在使用callisto设置弹出按钮

第一步是在要显示设置的页面的设置面板上添加CommandsRequest事件的侦听器。例如:

SettingsPane.GetForCurrentView().CommandsRequested += MainPage_CommandsRequested;
然后定义事件处理程序

void MainPage_CommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args)
{
    SettingsCommand generalCommand = new SettingsCommand("GeneralSettings", ResourceLoader.GetString("GeneralText"), (x) =>
    {
        SettingsFlyout settings = new SettingsFlyout();
        settings.HeaderBrush = Resources["SettingsHeaderBrush"] as SolidColorBrush;
        settings.HeaderText = ResourceLoader.GetString("GeneralText");
        settings.Background = new SolidColorBrush(Windows.UI.Colors.White);
        settings.Content = new GeneralSettingsFlyout();
        settings.IsOpen = true;
        settings.Height = Window.Current.Bounds.Height;

        // Optionally, add a closed event handler
        settings.Closed += settings_Closed;
    });
}
请注意,在此场景中,GeneralSettingsFlyout只是一个页面,一旦选择了特定设置,就会将其加载到设置窗格中。Callisto会自动处理此问题


SettingsFlyout是来自Callisto的类。

我也在使用Callisto和C,这就是我解决问题的方法

    void OnCommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args)
    {
        var settings = new SettingsCommand("settings", "Settings", new UICommandInvokedHandler(showSettings));
        args.Request.ApplicationCommands.Add(settings);
        var credits = new SettingsCommand("credits", "Credits", new UICommandInvokedHandler(showCredits));
        args.Request.ApplicationCommands.Add(credits);
    }

    public void showSettings(IUICommand command)
    {
        var settings = new SettingsFlyout();
        settings.Content = new SettingsUserControl();
        settings.HeaderBrush = new SolidColorBrush(_background);
        settings.Background = new SolidColorBrush(_background);
        settings.HeaderText = "Settings";
        settings.IsOpen = true;
    }

    public void showCredits(IUICommand command)
    {
        var settings = new SettingsFlyout();
        settings.Content = new CreditsUserControl();
        settings.HeaderBrush = new SolidColorBrush(_background);
        settings.Background = new SolidColorBrush(_background);
        settings.HeaderText = "Credits";
        settings.IsOpen = true;
    }
然后从其他页面我可以打电话给你

((App)Application.Current).showCredits(null);  

要打开设置窗格,我想看到:o

编辑app.xaml文件并引用此代码段:

然后,如果要显示该设置,请执行以下操作:


我的问题不是,在您的示例中,要打开常规设置,我们需要从设置窗格中选择特定的设置命令,但我想从外部按钮打开常规设置页面click@pashaplus-如果你对这个答案感到满意,你能接受吗oI也做了同样的事情,但是如果我想在网格加载的事件中显示设置窗格,它就不起作用了:会出现charms设置窗格,但不会显示我添加的命令!有什么想法吗?
((App)Application.Current).showSettings(null);
App::OnLaunched()
{
.
.
     var rootFrame = new CharmFrame { CharmContent = new CharmFlyouts() };
     SuspensionManager.RegisterFrame(rootFrame, "AppFrame");
.
.
}
SomeOtherMethod()
{
     ((Window.Current.Content as CharmFrame).CharmContent as CharmFlyouts).ShowSettings();
}