Articles of wpf

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#应用程序。

如何在Kiosk模式下运行C#程序?

我有我想安装在Windows平板电脑上的交stream#和WPF程序,我希望我的程序成为平板电脑上运行的唯一程序,当用户打开平板电脑时,它应该开始自动运行。 任何解决scheme

移到较大的显示器时,窗口不能正确resize

我的WPF应用程序在我的两台显示器笔记本电脑开发系统上显示出奇怪的行为 第二台显示器的分辨率为1920 x 1080; 笔记本电脑的分辨率是1366 x 768.笔记本电脑运行的是Windows 8.1,两台显示器的DPI设置都设置为100%。 插入时,第二台显示器是主显示器。 很明显,当第二台显示器没有插上时,笔记本电脑的显示器就是主显示器。 应用程序窗口始终最大化,但可以最小化。 它不能被拖动当你插入第二个显示器或拔下插头时,问题与显示器从一个显示器移动到另一个显示器时的显示方式有关。 当插入第二台显示器启动程序时,拔下笔记本电脑后,它将移动到笔记本电脑的显示器上。 WPF代码也正确处理了这种改变。 也就是说,它检测到原来的大小不适合新的显示器,所以它重新绘制它适合。 当第二台监视器重新插入时,它会移回第二台监视器,并以适当的尺寸重新绘制该监视器。 这正是我在这种情况下想要的。 问题是当程序在其他configuration中启动时。 当程序启动时没有插入第二个显示器,它将以笔记本电脑显示器的适当尺寸绘制。 当程序正在运行时插入第二台显示器,窗口移动到第二台显示器,但绘制错误。 由于该程序是最大化的,它有一个巨大的黑色边框在三面围绕它的内容显示在笔记本电脑的显示器相同的大小区域。 编辑:我刚刚完成了一些testing,并且WPF似乎没有正确处理从较小分辨率到较高分辨率的分辨率更改。 该窗口的行为是相同的,当我在笔记本电脑的显示器上启动程序,然后插入第二个显示器。 至less它是一致的。 我发现通过处理SystemEvents.DisplaySettingsChanged事件,我可以SystemEvents.DisplaySettingsChanged第二个监视器插入的时间或屏幕分辨率更改的SystemEvents.DisplaySettingsChanged 。 在我的testing中,我发现当窗口从较小的显示器移动到较大的窗口时,当窗口移动到较大的窗口时, Width , Height , ActualWidth和ActualHeight不变。 我已经能够做到的最好的方法是将Height和Width属性设置为与监视器的工作区域相匹配的值,但是ActualWidth和ActualHeight属性不会更改。 我如何强迫这个窗口把我的问题看作是一个解决scheme的改变? 或者,我如何强制窗口将其ActualWidth和ActualHeight属性ActualHeight为正确的值? 窗口从我写的名为DpiAwareWindow的类中下来: public class DpiAwareWindow : Window { private const int LOGPIXELSX = 88; private const int LOGPIXELSY = 90; private […]

需要关于图像编辑库的build议

我正在尝试创build一个基于WPF的应用程序,它将允许用户编辑照片并提供如下function: 增加/减less亮度 作物 复古看起来更多。 我也期待提供更多的花式function,如:构图,打印到T恤,但这些优先级低。 任何开源的库? PS – >这是一个POC项目,即使我错过了一些function,它会罚款。

调整一个WPF窗口,但保持比例?

我有一个用户可resize的WPF窗口,我想约束resize,使窗口的纵横比保持不变。 理想情况下,我想通过拖拽一个angular来调整窗口大小来限制鼠标位置,以保持适当的纵横比。 如果边缘用鼠标resize,则其他维度应同时更改。 有没有一个简单的方法来做到这一点或任何人都知道的在线示例? 如果没有更好的解决scheme出现,我会发布我已经完成了一些我已经完成了。