WPF中的DataGridView绘制错误

Posted

技术标签:

【中文标题】WPF中的DataGridView绘制错误【英文标题】:DataGridView draw bug in WPF 【发布时间】:2010-11-20 19:59:27 【问题描述】:

我在 WPF 项目中使用 WindowsFormsIntegration 来添加 DataGridView,但我只是在窗口中绘制它时遇到了一些问题(需要一段时间)。

我知道doublebuffered datagridview 的解决方案,但是如何在 XAML 中为 WPF 或在 C# 中为 WPF 使用它?

非常感谢 WPF 中带有 WindowsFormsIntegration 或任何替代解决方案的双缓冲 datagridview 示例!

感谢您提供的任何帮助!


编辑:

我正在使用 Microsoft Expression Blend 2 作为界面,我注意到它生成了一个资源字典。删除其中的一些样式实际上解决了部分问题,但我一直遇到同样的问题。导致包含 DataGridView 的 GroupBox 可见的操作是:单击选项卡控件,然后选择 RadioButton。一旦选中了某个 RadioButtion,某个 GroupBox 就会变得可见。它包含 WindowsFormsIntegration 主机,该主机本身包含 DataGridView,但在我将鼠标放在 GroupBox 内的按钮上之前,WindowsFormsIntegration 不会出现(或未绘制)... Expression Blend 是否对我的问题负责?

【问题讨论】:

【参考方案1】:

为数据网格使用 Windows 窗体集成的一个很好的替代方法是使用 Infragistics 提供的免费且非常棒的原生 WPF 数据网格。他们称它为 xamDataGrid 控件,相信我,它绝对漂亮。将其引入我公司的应用程序中,我得到了一些主要的布朗尼积分。

下载页面在这里:http://www.infragistics.com/dotnet/netadvantage/wpf.aspx?panel=Downloads#Downloads

概览页面:http://www.infragistics.com/dotnet/netadvantage/wpf/xamdatagrid.aspx#Overview

NetAdvantage for WPF Express 2009 Vol. 1 让您开始使用 用于 WPF 开发的 xamDataGrid™(此 不是试用版,具有真实的功能 xamDataGrid 9.1 版;没有购买 有必要在你的 应用程序)。

【讨论】:

【参考方案2】:

我知道解决方案 双缓冲数据网格视图,但如何 你能在 WPF 的 XAML 中使用它吗? 用于 WPF 的 C#?

除了促进 WPF 应用程序与其他类型的 Microsoft Windows 应用程序(在您的情况下为 Windows 窗体)之间现有的互操作外,使用此解决方案没有什么特别之处。

关于此类主题的第一站应该是 WPF Migration and Interoperability。特别是您会发现这两种情况的演练(我意识到您已经涵盖了这一点,只是为了完整性):

Walkthrough: Hosting a Windows Forms Control in Windows Presentation Foundation by Using XAML Walkthrough: Hosting a Windows Forms Control in Windows Presentation Foundation(仅通过 C# 代码)

这些演练基于MaskedTextBox Class,但您应该能够轻松地将其调整为DataGridView Class

在演练中再次介绍了托管自定义类所需的其他步骤,而不是 DataGridView,例如 CustomDataGridView

Walkthrough: Hosting a Windows Forms Composite Control in Windows Presentation Foundation

这个例子,作为一个复合控件,显然比你想要实现的existing solution的简单派生CustomDataGridView更复杂,但是你可以简单地跳过多余的步骤,仍然可以找到关于程序集引用的所有元信息对于这个自定义控件和类似的内容。

也就是说,鉴于您的编辑,我不认为缺少双缓冲实际上是导致问题的原因,尽管它确实可以解决这个问题,因此我将把这个实验留给你时刻 - 祝你好运!

【讨论】:

我会看看那些演练。谢谢! 使用 System.Windows.Forms.Integration.WindowsFormsHost 的子属性给了我一些想法......但我现在不能尝试。必须是明天。我会通知你我的进展。

以上是关于WPF中的DataGridView绘制错误的主要内容,如果未能解决你的问题,请参考以下文章

〝WPF〞中的〝ListBox〞、〝ListView〞和〝DataGridView〞有啥区别?

WPF中的ListBox,ListView和DataGridView有啥区别

WPF中怎么使用DataGridView

WPF DataGrid 与 Windows 窗体 DataGridView

Emgu-WPF 激光雷达研究-绘制雷达图

C# winform 关于datagrideview问题