问题标签 [elementhost]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 无法从 Windows 窗体进入 WPF 控件的调试模式
我正在使用ElementHost Control 将我从应用程序创建的自定义 WPF 控件嵌入到窗口中。早些时候,我可以通过在创建控件时按 F11 按钮来调试 WPF 控件:
但是现在我在从 XP 迁移到 Windows 8 机器后尝试调试相同的代码,我无法进入 WPF 控制的调试模式。任何人都可以帮我解决这个问题。谢谢
.net - Windows 窗体中托管的 wpf 控件中的鼠标滚轮事件
我有一个 Windows 窗体应用程序,它有一个 WPF 用户控件,可通过 ElementHost 控件使用。
WPF 用户控件具有旨在响应鼠标滚轮事件的代码。但是,当我运行应用程序并使用鼠标滚轮时,与这些事件相关联的代码都没有在 wpf 中运行。我通过在 Visual Basic 代码中放置断点来测试这一点。尽管如此,它确实会响应其他鼠标事件(例如单击或拖动,我用它来旋转我的 3d 模型)。
我想知道鼠标滚轮事件可能没有从 Windows 窗体传递到 WPF 用户控件,因为 Windows 窗体没有(或有限)鼠标滚轮支持。
相反,我尝试在 WPF 应用程序中编写一个 WPF 用户控件的简单程序,该控件响应鼠标滚轮事件。
WPF 用户控件有一个 viewport3D,我用它来做一些 3d 绘图,而这在 Windows 窗体中是做不到的。
这个问题有解决方法吗?我希望你能帮忙。谢谢你。
这是我如何在 WPF 控件中设置鼠标滚轮事件的示例。我在 UserControl、Grid 和 Canvas 中尝试过,但在其中任何一个中都没有鼠标滚轮事件。
c# - 在透明的 Windows.Form 中托管 WPF UserControl
我需要将我的 WPFUSerControl
插入到Windows.Form
. 这是我的控制:
为了承载这个控件,我使用一个ElementHost
对象作为我的表单的唯一一个控件。我需要有可能做到以下几点:当我将表单的不透明度设置为0时,为了使其不可见,我需要继续将所有Children
和Strokes
我的不透明度设置InkCanvas
为1(这样我可以看到他们)。
我尝试使用该TransparencyKey
属性,但它似乎不适用于ElementHost
. 我该如何解决这个问题,如何在我的 Form 和我的 UserControl 之间设置不同的不透明度?
wpf - ElementHost 在 MTAThread 中不起作用
我有 WPF 用户控件,它需要托管在MTAThread的 Windows 窗体中的 Windows 窗体中。解决方案应该适用于 STAThread 和 MTAThread。而且从技术上讲,在生产环境中没有更改公寓状态的选项。
程序.cs
在这种情况下,现在主机被添加到控件中,因为计数增加并且它不会在 MTAThread 中引发任何异常。但是 WPF 用户控件没有呈现。但是,在 STAThread 中,它抛出异常“调用线程无法访问此对象......”
对此的任何帮助将不胜感激。
c# - ElementHost 大小导致 wpf 打开/加载速度慢,内存使用率高
问题:
我们有一个 Winforms 应用程序,它可以打开另一个 WPF 窗口。此窗口包含各种图标和文本,并不太复杂。回到主窗口,winforms,它还嵌入了一个使用 ElementHost 的 WPF 控件(ElementHost 专门设计用于使 Winforms 能够托管 WPF 控件)。然而,我们注意到,一旦此应用程序的内存使用量变得相当高,第二个 WPF 窗口可能需要相当长的时间才能打开。
我们在 VS2012 中制作了一个小型测试应用程序,它能够复制该问题。测试应用程序打开一个 Winforms 窗口,该窗口有两个按钮;“添加 4gb 内存使用”和“打开 WPF 窗口”。WPF 窗口上有一个小图标(48*48),仅此而已。当我们添加 4Gb 内存使用并尝试第一次打开窗口时,打开窗口大约需要 7 秒。
代码:我已通过BitBucket公开了测试应用程序和源代码。
我们发现的事情:
- 该应用程序肯定在 64 位中运行,因为它会在 32 位中抛出 OutOfMemoryExceptions。
- 如果没有内存使用,窗口会立即打开。
- 随着内存的使用,窗口仅在第一次打开时很慢。
- 如果 WPF 窗口没有图像,它会立即打开。
- 减小 winforms 控件上的 elementhost 的大小,例如 1*1,窗口会立即打开。显然这不是一个很好的解决方案,因为它并没有在这种大小下显示很多我们的 WPF 控件。
- 我们应用中的 ElementHost 大小约为 1000*700,但我们注意到在减小 ElementHost 大小时有一个很大的下降点,所以需要这 10 秒,直到它达到 350*350 左右,此时它突然再次提高速度。这可能取决于计算机,或者可能是某种限制。
- 从 wpf 窗口中删除图像将使其再次变快。
- 添加新图像作为资源,并在 WPF 窗口上,线性减慢打开时间(例如 1 个图像 = 7 秒,2 个图像 = 14 秒)。
- 尝试确保图像的大小与其显示的大小相同,因此不应调整大小,但这似乎没有任何区别。
- 尝试了不同的图像类型,.png、.tiff、.ico,但它们似乎都很慢。
有没有其他人遇到过这个问题/对我们的下一步可能有什么建议?
c# - 如何从 ElementHost 控件中清除内存泄漏
我需要在 Winform 用户控件上托管 WPF 控件。为此,我使用了 ElementHost 控件。当我运行 Ants Memory profiler 时,我知道 ElementHost 控件中存在巨大的内存泄漏。请在下面找到随附的保留图,并帮助我修复 Memoryleak 。
wpf - 当 WPF 内容托管在 WinForms 中时如何为命令使用输入绑定
我有带有选项卡控件的 Windows 窗体窗口,其中一个选项卡主机 ElementHost 以 ContentControl 作为子元素。此控件具有输入绑定的集合,这些输入绑定仅在任何子元素具有输入焦点时才起作用,但如果焦点丢失,它们将不再做出反应。在这种情况下是否可以在更高级别上定义这些输入绑定?
c# - C# Windows 窗体:将图片拖放到 WPF RichTextBox 中(在 ElementHost 中)
我在表单上有一个带有 WPF RichTextBox(在 ElementHost 中)的 ac# Windows Forms 项目,并希望将图片从资源管理器(Windows 7 x64)拖放到其中,但光标仅显示不允许的符号。这是我的代码:
使用设计器订阅事件。他们都没有被解雇:
如果我使用 Windows 窗体 RichTextBox 是可行的,但我需要一个 WPF RichTextBox:
wpf - 在 wpf 用户控件中使用字体文件
我在 Winforms 表单中使用 WPF UserControl。我有它的工作。
我希望我在 WPF UserControl 中使用的文本使用我作为 TTF 的字体。
我不知道如何引用此 TTF 并让控件使用它。我假设我应该在 UserControl 中加载 TTF(这不是安装的字体)并告诉控件(标签)使用它,但我只看到对字体系列的引用。
wpf - WPF - 文本框的 FIND 方法?
使用a后Windows Forms RichTextBox
,我意识到WPF TextBoxes
没有.Find
Method(如here所述)。我不希望使用 a因为它在我使用HostElementWPF RichTextBox
托管元素时会导致性能问题。这是托管它的方式Windows Forms
WPF TextBox
Windows Forms
我听说过很多关于 WPF 的全局搜索,但我不希望实现该功能。基本上我想要的是 WPF 文本框的基本 Find 方法。它应该由一个 TextBox 和一个 Button 组成。TextBox 用于输入您要查找的字符串,而 Button 应该是 Find Method 激活的命令。每次用户单击 Button 时,Find 方法都会跳转到下一个搜索结果以及下一个和下一个……并充当循环。
有人可以帮我解决这个问题。