Articles of wpf

调整窗口大小而不显示窗口内容

在Windows中,您有一个设置为“拖动时显示窗口内容”。 当这个closures时,你改为调整窗口的轮廓。 我的WPF应用程序有很多控件,所以resize非常缓慢。 有没有办法让我的应用程序resize只显示窗口大纲,而不是总是更新内容? 我发现这个问题关于WinForms,但不幸的是,我无法适应WPF。 我可以挂钩到HwndSource ,但在Windows 10中的消息号码可能已经改变,所以if语句中的答案是从来没有input…或者可能有其他的东西在工作。 另外, if在调用WndProc base之后,又改变了一个系统参数,那么在调用完系统参数后重新设置系统参数。 但是调用该方法不是WPF中的选项,因为Window对象无法转发消息。 public void OnViewLoaded() { HwndSource source = HwndSource.FromHwnd( new WindowInteropHelper(this).Handle); source?.AddHook(WndProc); } private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) { if (msg == WM_SYSCOMMAND && (wParam.ToInt32() & 0xfff0) == SC_SIZE) { // This if is never […]

WPF主应用程序停止响应,如果一个子窗口正在移动

我们有一个用C#编写的应用程序,使用WPF。 它有一个基于计时器的激活事件,导致在DirectX上下文中绘制一些graphics。 一切似乎都好,直到我们打开子窗口,并在屏幕上移动它。 时机似乎与计时器被解雇一致,但在那一刻,整个屏幕(甚至其他应用程序)似乎冻结,用户无法点击任何地方。 如果按下ALT + TAB组合键,正常操作将从完全相同的地方恢复。 在冻结状态期间,CPU /内存利用率没有上升,这导致我怀疑在主线程上存在某种阻塞。 通常情况下,如果我的应用程序在某些操作的中间挂起,我会去按Visual Studio的暂停,并在debugging器中看到线程视图。 这给了我足够的想法,哪个呼叫是罪魁祸首。 但在这种情况下,如果我按ALT + TAB切换到IDE,我的应用程序恢复正常执行。 如果我把我的IDE放在第二个屏幕上,并尝试点击(不需要按ALT + TAB),它也会被冻结(正如我之前提到的,整个桌面似乎被冻结到鼠标点击。正常) 任何人都面临/意识到类似的问题,我怎么可以继续debugging呢?

如何debugging挂起的WPF应用程序?

我有一个挂在一个用户的机器上的WPF应用程序。 其他用户不受影响。 该应用程序挂起运行本身的开发环境,同时在debugging运行。 这个问题可以被可靠地重现,只要用户试图去做就会挂起。 在debugging下运行没有线索,没有任何exception,应用程序只是停止响应。 我有什么select来debugging呢? 是否有任何外部工具 – 像sysinternals套件的东西 – 可以帮助? 是否有任何Visual Studiodebugging器技巧或技巧,可能会提供更多的信息?

为最大化的WPF自定义窗口删除DropShadow

我有一个自定义窗口边框的WPF应用程序(.NET Framework 4)。 我已经禁用使用WPF壳集成库的玻璃边框,并绘制我自己的边框。 但是,我想添加一个DropShadow的时候没有最大化的窗口边界。 我已经添加了这样的阴影: private static bool DropShadow(Window window) { try { WindowInteropHelper helper = new WindowInteropHelper(window); int val = 2; int ret1 = DwmSetWindowAttribute(helper.Handle, 2, ref val, 4); if (ret1 == 0) { Margins m = new Margins { Bottom = 0, Left = 0, Right = 0, Top = 0 }; […]

WPF相当于Application.AddMessageFilter(Windows窗体)

我在我的WinForms应用程序(使用非托pipe代码时)使用Application.AddMessageFilter() )。 现在我切换到WPF ,无法find这个function。 请咨询哪里可以find或实施。

Snoop没有看到我的应用程序的子窗口

当我运行Snoop 2.8时,它会看到我的程序的主窗口并将其列在ComboBox 。 但是,我的程序创build一个通过调用ChildWindow.Show()显示的子窗口。 不pipe我做什么,我都无法窥探那个孩子的窗口。 如果我刷新窗口列表,它不显示。 如果我在子窗口上拖动望远镜旁边的小十字头发图标,主窗口就会出现。 我如何窥探我的应用程序的子窗口?

在Linux上编译C#+ WPF以便在Windows上运行

我有一个C#应用程序,其中一些部分是使用WPF(Mono不支持)编写的。 有没有可能在Linux上编译这个应用程序? 最终,应用程序将在Windows上运行,但它是一个更大的框架的一部分,我们的整个构build过程运行在Linux上,所以我希望能够在Linux上编译C#应用程序。

最小化WPF中的窗口?

如何在使用Windows WPF时以编程方式最小化窗口? 我似乎可以find.Resize属性?

WPF RibbonWindow + Ribbon =标题外屏?

我正在试用Ribbon控制与RibbonWindow结合使用,但是即使在微不足道的实验中也是如此。 创build了新的WPF应用程序 将代码更改为MSDN中的示例 添加了对System.Windows.Controls.Ribbon引用,并删除了ribbon:前缀(为什么示例过时?)。 增加了两个图标(16×16和32×32)。 执行了应用程序,看到了这个(记事本供参考): 我已经可以看到很多问题了: 边界很小。 一个正常的窗口有一个大的边框,WPF Ribbon应用程序很小。 标题高度也较小。 边框模糊。 当一个正常的窗口被聚焦时,它的边界是黑色的。 WPF应用程序的边框是灰色的(黑色可以在angular落看到;有东西是在边界上绘制的)。 应用程序图标放错了位置。 它粘在左上angular。 应用程序标题错位。 它粘在顶部。 让我们把工具栏移到底部。 现在我们看到这个: button在工具栏之外。 最后,让我们最大化的窗口: 一半的标题消失在屏幕之外(技术上,窗口在屏幕的外侧每边8像素,但其他应用程序不会被这个混淆)。 我正在使用Windows 7,Aero,单个显示器,没有什么特别的。 我害怕在Windows 8上testing应用程序… 有什么机会解决这个问题?

Environment.SpecialFolder.ApplicationData返回错误的文件夹

我有一个奇怪的问题:我的.NET 4.0 WPF应用程序正在将数据保存到ApplicationData文件夹。 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\myProgram\\"; 99.9%的案例工作得很好,但在一些电脑上,它返回错误的文件夹 – 而不是返回用户文件夹它返回另一个文件夹: C:\Users\<user>\AppData\Roaming\myProgram\ –correct C:\Users\s\AppData\Roaming\myProgram\ –wrong 错误的文件夹没有写/读权限,所以我的程序无法正常工作。 看来程序运行在不同的用户下,但是如果我检查任务pipe理器,用户是已login的用户。 问题似乎发生在域用户权限很less的情况下。