gpt4 book ai didi

c# - Windows 8 Metro App 制作设置弹出窗口

转载 作者:行者123 更新时间:2023-11-30 13:23:03 28 4
gpt4 key购买 nike

我正在制作一款游戏,我希望用户能够从右侧滑动并从 Windows 8 的 super 按钮栏中打开设置。
我已经尝试了很多东西,但我还没有设法让它发挥作用。如果有人做过,请告诉我你是怎么做到的。我正在使用 Visual Studio 2012 Express。

最佳答案

更新:

从 Windows 8.1 开始,SettingsFlyout 控件已添加到 Windows 应用商店应用程序的控件集合中。

添加 => 新建 => SettingsFlyout

enter image description here

然后像这样添加:

sealed partial class App
{

public App()
{
this.InitializeComponent();
this.Suspending += OnSuspending;
}

protected override void OnWindowCreated(WindowCreatedEventArgs args)
{
SettingsPane.GetForCurrentView().CommandsRequested += OnCommandsRequested;
}

private void OnCommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args)
{
var setting = new SettingsCommand("MySetting", "MySetting", handler =>
new MySettingsFlyout().Show());
args.Request.ApplicationCommands.Add(setting);
}

结果:

enter image description here enter image description here旧方法:

这是在 Windows 8 中使用 xaml 和 c# 实现的方法

1.创建一个xaml用户控件

 <UserControl
x:Class="CSharp_Settings.Settings.Help_Settings"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="646">
<Border BorderBrush="#FF590151" BorderThickness="1">
<Grid Background="White" VerticalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="80"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid Background="#FFFF00F2" Grid.Row="0">
<Grid Margin="40,20,17,13">
<Grid.Transitions>
<TransitionCollection>
<EntranceThemeTransition FromHorizontalOffset="50" />
</TransitionCollection>
</Grid.Transitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50" />
<ColumnDefinition Width="*" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Click="Button_Click_1" Margin="0,3,0,0" Grid.Column="0"

HorizontalAlignment="Left" Style="{StaticResource BackButtonStyle}"/>
<TextBlock Margin="10,5,0,0" Grid.Column="1" FontFamily="Segoe UI"

FontWeight="SemiLight" FontSize="24.6667" Text="Help" HorizontalAlignment="Left" />
<Image Source="/Assets/icon.png" HorizontalAlignment="Right" Grid.Column="2"

Margin="0,0,6,0" />
</Grid>
</Grid>
<Grid Grid.Row="1" Margin="40,24,23,0" VerticalAlignment="Top">
<Grid.Transitions>
<TransitionCollection>
<EntranceThemeTransition FromHorizontalOffset="120" />
</TransitionCollection>
</Grid.Transitions>
<TextBlock Text="Something" Foreground="Black"/>
</Grid>
</Grid>
</Border>
</UserControl>

用户控件的代码隐藏

using Windows.UI.ApplicationSettings;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls.Primitives;
namespace CSharp_Settings.Settings
{
public sealed partial class Help_Settings
{
public Help_Settings()
{
InitializeComponent();
}

private void Button_Click_1(object sender, RoutedEventArgs e)
{
if (Parent is Popup)
((Popup)Parent).IsOpen = false;
SettingsPane.Show();
}
}
}

在应用程序中注册设置面板

using CSharp_Settings.Settings;
using Windows.Foundation;
using Windows.UI.ApplicationSettings;
using Windows.UI.Core;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;

namespace CSharp_Settings
{
public sealed partial class MainPage
{
public MainPage()
{
InitializeComponent();
_window = Window.Current.Bounds;
Window.Current.SizeChanged += OnWindowSizeChanged;
SettingsPane.GetForCurrentView().CommandsRequested += CommandsRequested;
}

private Rect _window;
private Popup _popUp;
private const double WIDTH = 646;

private void OnWindowSizeChanged(object sender, WindowSizeChangedEventArgs e)
{
_window = Window.Current.Bounds;
}

private void CommandsRequested(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args)
{
args.Request.ApplicationCommands.Add(new SettingsCommand("help", "Help", Handler));
}

private void Handler(IUICommand command)
{
_popUp = new Popup
{
Width = WIDTH,
Height = _window.Height,
IsLightDismissEnabled = true,
IsOpen = true
};
_popUp.Closed += OnPopupClosed;
Window.Current.Activated += OnWindowActivated;
_popUp.Child = new Help_Settings {Width = WIDTH, Height = _window.Height};
_popUp.SetValue(Canvas.LeftProperty, SettingsPane.Edge == SettingsEdgeLocation.Right ? (_window.Width - WIDTH) : 0);
_popUp.SetValue(Canvas.TopProperty, 0);
}

private void OnWindowActivated(object sender, WindowActivatedEventArgs e)
{
if (e.WindowActivationState == CoreWindowActivationState.Deactivated)
_popUp.IsOpen = false;
}

private void OnPopupClosed(object sender, object e)
{
Window.Current.Activated -= OnWindowActivated;
}
}
}

在 Javascript 和 html 中,您确实在 html 中创建:

<!doctype HTML>
<html>
<body>
<div style="border: 1px solid #AB00A5" data-win-control="WinJS.UI.SettingsFlyout" data-win-options="{settingsCommandId:'help', width:'narrow'}">
<div class="win-ui-dark win-header" style="background-color:#FF00F7">
<button type="button" onclick="WinJS.UI.SettingsFlyout.show()" class="win-backbutton"></button>
<div class="win-label"> Help</div>
<img src="../images/icon.png" style="position: absolute; right: 40px; width:35px; height:35px"/>
</div>
<div class="win-content win-settings-section">
<h3>Help!</h3>
<p> No help for you muahahaha</p>
</div>
</div>
</body>
</html>

Function to register the settings pane:

(function () {
"use strict";
WinJS.Application.onsettings = function (e) {
e.detail.applicationcommands = {
"about": {
title: "About",
href: "/html/settings_about.html"
},
"help": {
title: "Help",
href: "/html/settings_help.html"
}
};
WinJS.UI.SettingsFlyout.populateSettings(e);
};

WinJS.Application.start();
})();

请记住以下几点:

  • 为入口点使用一个词标签
    • 建议最多 4 个入口点
    • 窄 = 346 像素
    • 宽 = 646 像素。
    • 高度与屏幕相同。
    • 标题:后退按钮+入口点名称+应用程序图标,背景颜色与应用程序磁贴相同
    • 设置面板边框颜色应比标题颜色深 20%,背景应为白色。
    • 滚动正常但高度最大为两倍
    • 没有用于导航、命令或提交更改的按钮
    • 如果单击入口点则无直接操作权限命令由系统控制
    • 应该是带有入口动画的弹出按钮
    • 可轻微忽略应与设置位于同一侧(使用 SettingsEdgeLocation 属性)

关于c# - Windows 8 Metro App 制作设置弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15043352/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com