问题标签 [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.

0 投票
1 回答
581 浏览

wpf - ElementHost 的 WPF 表单和网格绑定方法可能存在内存问题?

当用户单击 WinForms 菜单项时,将执行以下代码:

p>

显示的窗口是 Infragistics XamRibbonWindow。它还包含一个 Infragistics XamDataGrid,其 DataSource 绑定到视图模型上的 IEnumerable 属性。

该窗口还包含一个“搜索”按钮,该按钮将从数据库中检索新的项目集合,并设置前面提到的视图模型属性。这会导致网格显示新集合。

稍后,用户可以关闭窗口。没有编写代码来处理关闭。

我的问题是:

  1. 关闭窗口是否会处理窗口及其控件并使集合绑定到它的 GC 能力(假设不存在对集合的其他引用)?
  2. 有没有人看到我所描述的任何潜在的记忆问题?也许随着网格显示的项目的更新方式(或其他任何方式)?
0 投票
5 回答
3833 浏览

wpf - 根据 ElementHost 大小调整表单大小

我有一个Form(winform),它包含Elementhost. 在运行时,我将我的 WPF 用户控件托管到这个elementhost. 我用过AutoSize = Trueelementhost。

Elementhost根据 WPF 用户控件大小调整自身大小。但是如何根据我的 ElementHost 的大小调整我的表单大小。

谢谢,

0 投票
3 回答
5154 浏览

c# - ElementHost 中的 WPF 控件呈现问题

我有一个 WinForms 控件,里面有一个TableLayoutPanel包含多个的控件ElementHosts,每个控件都ElementHost包含一个 WPF 控件。

一切正常,除非控件的大小大于窗口并且ScrollBar存在;当我向下滚动时,控件会变得扭曲,就像这样 -

在此处输入图像描述

在最大化窗口或重新调整窗口大小时,控件会正确呈现(减小大小以使控件超出可见区域,然后再次增加大小以将它们带回可见区域)

这不会发生在同一个窗口中的 WinForms 控件只是 WPF 的控件中;知道为什么会发生这种情况以及任何解决方案吗?

0 投票
0 回答
301 浏览

c# - 如何在 C# 中将 ElementHost 添加到 Datagridview 单元格?

我想将 ElementHost 添加到我的 datagridview 以将设计的 WPF 控件带入 win 表单。我的问题是如何做到这一点!到目前为止,这是我的代码:

我都试过了dgv.Columns.Add(host)dgv.Controls.Add(host)但它们都不起作用。有没有办法做到这一点?谢谢您的帮助。

ps datagridview 应该有 10 行,每行在每个单元格中嵌入一个用户控件。

0 投票
1 回答
8558 浏览

windows - ElementHost 中的 Application.Current 为空

我在我的个人库中使用 WPF UserControl。Libs 包含在我的 WPF 和 WindowsForms 程序中。现在我的 UserControl 必须显示一个新的 (WPF) 窗口。在新窗口中,我想设置所有者。我这样做:

如果我在 WPF 程序中使用 UserControl,这可以正常工作。

当我在我的 WindowsForms 程序中使用 UserControl 时(我在 ElementHost 中设置了 UserControl elementHost.Child = ...)为Application.Current空。

这不好,我的程序抛出异常。

为什么为Application.Current空?

0 投票
1 回答
1059 浏览

winforms - 如果 WinForms 控件嵌套在 ElementHost 中,如何找到它的所有者表单?

我们的一位客户将我们的 WinForms .NET 网格控件 iGrid.NET ( http://www.10tec.com/ ) 与其他 WPF 控件一起托管在 WPF ElementHost 容器中。它可能看起来很奇怪,因为它是 WinForms 表单内 WPF 主机内的 WinForms 控件,但他们别无选择,因为他们使用了其他 WPF 东西(它是 AvalonDock http://avalondock.codeplex.com/对接容器)。

问题是我们的 .NET 数据网格控件的基础结构需要知道父 WinForms 表单,但我们使用的以下构造在这种情况下总是返回 null:

即用于此目的的标准 Control.TopLevelControl 属性返回 null - 尽管在 WPF 主机的情况下很可能应该如此。

问题是:还有其他方法可以从当前控件的代码中了解父窗体吗?比如说,使用 WinAPI 句柄还是更好的其他原生 .NET memebrs?

0 投票
1 回答
660 浏览

c# - ElementHost 中托管的 WPF 元素未正确重绘

我正在编写一个程序来在 C# 中实现 COM 组件。该组件也提供了一个 UI 组件。为了便于实现组件的未来添加,我决定使用 WPF 在 Xaml 中编写 UI,并将其包装在 ElementHost 控件中,以便将句柄返回给 COM 使用者。

这就是有趣的地方。该元素托管在 win32 选项卡控件中。第一次选择选项卡时,它加载正常。切换到另一个选项卡并返回会导致它无法正确绘制组件。如果我在其中移动鼠标,它将绘制 TextBox 元素,但它永远不会重绘整个 UserComponent。

我已经尝试了我看到的所有可能的解决方案,从更改组件的高度/宽度值到将 HwndTarget 置于 SoftwareOnly 呈现模式。

我不确定此时要尝试什么,因此欢迎提出建议。我真的很想在不使用 Windows 窗体的情况下做到这一点,因为它的未来维护者不是最好的程序员,告诉他们编写一个带有数据绑定的 Xaml 文件比手动布局表单并设置要容易得多代码隐藏中的值。

0 投票
1 回答
863 浏览

c# - Windows 窗体、元素宿主和样式继承

我有一个 Windows 窗体应用程序,在其中托管了一个使用 WPF 创建的用户控件。这是使用 Element Host 类完成的。元素宿主容器中的所有 WPF 元素都继承了 windows 窗体样式,包括字体等。

我想防止这种情况发生。所有元素都应该继承默认的 WPF 样式,因此字体(和其他样式)是相同的。我怎样才能做到这一点?

我不想自己设置所有默认值。

示例窗口 示例窗口,注意 'segeo' 中的 'g' 和 'MS Sans Serif' 中的 'S' 之间的区别

0 投票
1 回答
2155 浏览

c# - 如何在 Winforms/WPF 中创建透明 ElementHost

长时间的潜伏者和自学 OOP 和 c# 非常感谢这里的伟大人物。我 99% 的问题似乎都是通过在网上搜索找到的,但我被这个问题困住了。

我的问题是我有一个自定义 GUI,我在其中堆叠托管 WPF 用户控件的 elementhost 控件元素。我已经成功地使这些图形出现并执行它们的行为,但它们彼此之间并不透明。我已经堆叠了彼此重叠的图标,它们具有半透明的边缘,它们应该融合在一起。这些图标是在paint.net 中制作的,并且确实具有正确的透明度图形。使用 host.BackColorTransparency = true,我能够使这些元素宿主对我的 winforms GUI 的背景透明,但它们彼此之间仍然不透明。

我试图在这里尽可能地进行描述。由于这是一个工作项目,我无法显示任何专有信息。如果有人需要更多信息,请告诉我。感谢您的任何帮助。

0 投票
1 回答
1755 浏览

wpf - 托管在 ElementHost 中的 UserControl 出现奇怪的焦点问题

我有 UserControl,它在ElementHost.
它包含DataGrid
当用户按下回车键或双击行时显示新窗口(无模式),并且当该窗口关闭时,带有 ElementHost 的窗口将重新激活。问题是 DataGrid 失去焦点。

Snoop 向我展示了可视化树具有以下结构:

AdornerDecorator -> AvalonAdapter -> 我的用户控件。
Snoop 显示激活后 AdornerDecorator 有属性

什么对我来说绝对是胡说八道。
当用户点击 Tab 或箭头键时,第一个启用的 UserControl 元素获得焦点。

我读过这篇文章,但我对此并不满意:

对于 WPF 和 Windows 窗体,Focus 的工作方式不同,这里有一些我们无法修复的粗糙边缘。如果您在 WindowsFormsHost 中具有焦点并且最小化/恢复表单或显示模式对话框,则 WindowsFormsHost 中的焦点可能会丢失 - WindowsFormsHost 仍然具有焦点,但其中的控件可能没有。

怎么办?放松和快乐?
非常令人失望的是无法在其他应用程序中重现该问题。

谁能解释这种奇怪行为的原因是什么?可能会提供一些解决方法。