XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEToolBox

【WPF】XFE工具箱

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFEToolBox

提升托盘菜单窗口渲染质量与DPI兼容性

- TrayMenuWindow.xaml 增加渲染与文本优化属性,调整窗口高度与按钮布局 - TrayMenuWindow.xaml.cs 优化 ShowAtCursor 方法,确保多屏高DPI下窗口定位与显示效果 - XFEToolBox.Client.csproj 指定应用程序清单文件 - 新增 app.manifest,声明权限、DPI 感知、兼容系统与长路径支持

ac06e9e
XFE工作室室长 <mail@xfegzs.com>
提交于

代码差异

4 个文件 +34 -3
Modified XFEToolBox/Views/Windows/TrayMenuWindow.xaml +5 -2
@@ -1,9 +1,12 @@
1 1 <Window x:Class="XFEToolBox.Client.Views.Windows.TrayMenuWindow"
2 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4 Width="246" Height="232" WindowStyle="None" AllowsTransparency="True"
4 Width="246" Height="258" WindowStyle="None" AllowsTransparency="True"
5 5 Background="Transparent" ShowInTaskbar="False" Topmost="True"
6 6 ResizeMode="NoResize" WindowStartupLocation="Manual"
7 UseLayoutRounding="True" SnapsToDevicePixels="True"
8 TextOptions.TextFormattingMode="Display" TextOptions.TextHintingMode="Fixed"
9 RenderOptions.BitmapScalingMode="HighQuality"
7 10 Deactivated="Window_Deactivated" PreviewKeyDown="Window_PreviewKeyDown">
8 11 <Window.Resources>
9 12 <Style x:Key="TrayActionButtonStyle" TargetType="Button">
@@ -80,7 +83,7 @@
80 83 </Grid>
81 84 </Button>
82 85 <Border Height="1" Margin="10,4" Background="#E5E5F1"/>
83 <Button Style="{StaticResource TrayActionButtonStyle}" Click="ExitButton_Click">
86 <Button Style="{StaticResource TrayActionButtonStyle}" Margin="0,2,0,8" Click="ExitButton_Click">
84 87 <Grid>
85 88 <Grid.ColumnDefinitions><ColumnDefinition Width="31"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
86 89 <TextBlock Text="×" Foreground="#D26F82" FontSize="19" VerticalAlignment="Center"/>
Modified XFEToolBox/Views/Windows/TrayMenuWindow.xaml.cs +5 -1
@@ -22,9 +22,13 @@ public partial class TrayMenuWindow : Window
22 22
23 23 public void ShowAtCursor()
24 24 {
25 // 先把尚未显示的 HWND 移到鼠标所在显示器,确保 WPF 按目标屏幕 DPI
26 // 完成首次布局,避免从主屏移动后被 Windows 进行位图拉伸。
27 PositionNearCursor();
25 28 if (!IsVisible) Show();
26 Activate();
29 // DPI 切换可能改变原生窗口尺寸,再按实际尺寸校正一次边缘位置。
27 30 PositionNearCursor();
31 Activate();
28 32 }
29 33
30 34 private void OpenHomeButton_Click(object sender, RoutedEventArgs e) => Run(showHome);
Modified XFEToolBox/XFEToolBox.Client.csproj +1 -0
@@ -6,6 +6,7 @@
6 6 <Nullable>enable</Nullable>
7 7 <ImplicitUsings>enable</ImplicitUsings>
8 8 <UseWPF>true</UseWPF>
9 <ApplicationManifest>app.manifest</ApplicationManifest>
9 10 <ApplicationIcon>Resources\Icon\XFEToolBoxIcon.ico</ApplicationIcon>
10 11 <Version>1.1.5</Version>
11 12 <AssemblyTitle>XFEToolBox</AssemblyTitle>
Added XFEToolBox/app.manifest +23 -0
@@ -0,0 +1,23 @@
1 <?xml version="1.0" encoding="utf-8"?>
2 <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
3 <assemblyIdentity version="1.0.0.0" name="XFEToolBox.Client.app" />
4 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
5 <security>
6 <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
7 <requestedExecutionLevel level="asInvoker" uiAccess="false" />
8 </requestedPrivileges>
9 </security>
10 </trustInfo>
11 <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
12 <application>
13 <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
14 </application>
15 </compatibility>
16 <application xmlns="urn:schemas-microsoft-com:asm.v3">
17 <windowsSettings>
18 <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/pm</dpiAware>
19 <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2,PerMonitor</dpiAwareness>
20 <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
21 </windowsSettings>
22 </application>
23 </assembly>