c# - 如何在 WPF 中创建一个看起来像“UWP”应用程序的顶级窗口?
问题描述
我需要创建一个类似于以下内容的 WPF 自定义窗口: 此窗口
有什么办法可以做到吗?
我尝试使用 MahApps.Metro Window 但调整大小时窗口非常闪烁。这是示例代码:
<Controls:MetroWindow x:Class="MahAppsMetroSample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
Title="MahApps.Metro.Sample"
GlowBrush="{DynamicResource AccentColorBrush}"
WindowStartupLocation="CenterScreen">
<Controls:MetroWindow.RightWindowCommands>
<Controls:WindowCommands>
<Button Content="settings" />
<Button>
<StackPanel Orientation="Horizontal">
<iconPacks:PackIconModern Width="24" Height="24" Kind="FoodCupcake" />
<TextBlock Margin="4 0 0 0" VerticalAlignment="Center" Text="deploy cupcakes" />
</StackPanel>
</Button>
</Controls:WindowCommands>
</Controls:MetroWindow.RightWindowCommands>
<Grid>
</Grid>
</Controls:MetroWindow>
解决方案
是的,您可以使用称为 UWP 主机的包来实现它。
UWP 主机 - Github
第 1 步:
您需要做的就是通过 nuget 将 UWP Host 导入您的项目。
第 2 步:
将此代码添加到您的 App.xaml 文件
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/UWPHost;component/Themes/Generic.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
第 3 步:
将此命名空间添加到您要更改的窗口中
xmlns:uwp="clr-namespace:UWPHost;assembly=UWPHost"
第 4 步:
将 uwp 前缀添加到窗口标签并确保它看起来与此类似
<upw:Window x:Class="WpfApp1.MainWindow"
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"
xmlns:local="clr-namespace:WpfApp1"
xmlns:uwp="clr-namespace:UWPHost;assembly=UWPHost"
mc:Ignorable="d"
ShowTitlebar="true" Theme="Light"
Title="MainWindow" Height="300" Width="300">
</uwp:Window>
步骤 5
继承 UWPHost.Window 类,
例如:
public partial class MainWindow : UWPHost.Window{
public MainWindow()
{
InitializeComponent();
}
}
就是这样
推荐阅读
- javascript - 我想详细了解这个函数(.on())的含义
- django - DJANGO + SAML2 + CSRF
- javascript - Javascript:检查屏幕宽度并删除 HTML 元素
- wordpress - 如何将插件简码打印到 wordpress 管理页面
- docker - 如何在 Docker 容器中为 kubectl 生成 admin.conf 文件
- python - 在树莓派中安装 QtVirtualkeyboard?
- asp.net - OWIN 使用什么机制来确定用户在阅读其声明之前已通过身份验证?
- html - 没有方案的 HTML 锚点 href
- ruby-on-rails - All scheduled sidekiq jobs are not excuting in rails
- google-cloud-platform - Frequent errors on firestore: StructuredQuery.from cannot have more than one collection selector