.net – WPF Handyness与弹出窗口
发布时间:2020-12-14 04:33:36 所属栏目:Windows 来源:网络整理
导读:我刚从 Windows 7将PC移动到Windows 8,而在运行我们的WPF应用程序时,我注意到我们的WPF弹出窗口和/或工具提示现在位于左下方,而不是正常的右下角.有人注意到了吗?我知道你可以在xaml中的每个工具提示上指定他们的位置,但是我们有很多工具提示和弹出窗口.我
我刚从
Windows 7将PC移动到Windows 8,而在运行我们的WPF应用程序时,我注意到我们的WPF弹出窗口和/或工具提示现在位于左下方,而不是正常的右下角.有人注意到了吗?我知道你可以在xaml中的每个工具提示上指定他们的位置,但是我们有很多工具提示和弹出窗口.我想知道是否有办法在WPF应用程序中全局指定默认位置. Google在这个问题上没有得到很多结果.我们有理由将它们保持在相同的原始默认位置(某些弹出窗口的内容相对于其启动位置).
Windows 8:(左下) Windows 7:(右下) 相同的代码!标准的“工具提示”xaml属性. 有任何想法吗? 已解决,我发表了评论 好的,我发现了这个问题.它与平板电脑/触摸屏有关. (左手..右手偏好)这个其他链接提供了一个原因.我正在努力解决这个问题.不快发布细节! windows 8 popup location
好的,对于那些不希望在应用程序中发生这种情况的人(这是我们的愿望),我们为WPF创建了一个很好的小黑客.这对我们来说很好.
第一: 这个代码将会是什么运行,它修复了这个问题: public static void SetAlignment() { var ifLeft = SystemParameters.MenuDropAlignment; if (ifLeft) { // change to false var t = typeof(SystemParameters); var field = t.GetField("_menuDropAlignment",BindingFlags.NonPublic | BindingFlags.Static); field.SetValue(null,false); ifLeft = SystemParameters.MenuDropAlignment; } } 然而,环境可以解除微软内部缓存的这些值,所以我们必须挂钩到WinProc才能得到这个.我不会发布WinProc代码,只需要消息: 这些是将取消验证内部缓存的Win32消息: private const int WM_WININICHANGE = 0x001A; private const int WM_DEVICECHANGE = 0x219; private const int WM_DISPLAYCHANGE = 0x7E; private const int WM_THEMECHANGED = 0x031A; private const int WM_SYSCOLORCHANGE = 0x15; 而快速的snippit,将设置您的偏好.因为我们被连接到WinProc,所以在WinProc在其他处理程序上完成消息之后,您将需要更改此值.我们有一个延迟将偏好值重新设置回我们想要的. if (msg == WM_WININICHANGE || msg == WM_DEVICECHANGE || msg == WM_DISPLAYCHANGE || msg == WM_THEMECHANGED || msg == WM_SYSCOLORCHANGE) { Timer timer = null; timer = new Timer((x) => { WpfHelperHacks.SetAlignment(); timer.Dispose(); },null,TimeSpan.FromMilliseconds(2),TimeSpan.FromMilliseconds(-1)); } 就像这样完整的.我希望这有助于别人! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Windows Server 2016-批量新建域用户(二)
- win7 C盘的User文件夹转移到D盘
- type-conversion – 如何在Go中将[4] uint8转换为uint32?
- .net – 在Windows CE中进行跨进程通信的最佳机制是什么?
- windows-7 – 在windows7中设置JRE路径的要求,如设置JDK的路
- 生锈 – 为什么Cargo为同一个注册表创建多个目录?
- windows – 终端服务 – 阻止用户在远程会话中使用本地打印
- azure-active-directory – 对未返回预期更改的组的图形增量
- xaml – 在Windows 8应用程序中将Rectangle的高度设置为0的
- 永久更改Windows中的环境变量
推荐文章
站长推荐
热点阅读