疑问:WPFToolkit中的DataGrid数据列为何会意外丢失?

我有一个工程,要多次使用数据表格,每次使用的数据集的列可能不同,那么我就想到写一个UserControl公共控件来使用,将经常对数据集操作的通用的动作放到里面。UserControl中,DataGrid的具体定义如下:

 

代码
   
   
1 < dg:DataGrid DockPanel.Dock ="Top" Name ="dgData" ItemsSource =" {Binding} " BorderThickness ="0" AlternationCount ="2" AutoGenerateColumns ="True" ColumnHeaderStyle =" {StaticResource dgHeaderStyle} "
2 RowStyle =" {StaticResource dgRowStyle} " CellStyle =" {StaticResource dgCellStyle} " SelectionMode ="Extended"
3 SelectionUnit ="FullRow" GridLinesVisibility ="All" VerticalGridLinesBrush ="DarkGray" >


然后在工程里使用这个包含DataGrid的定义好的UserControl,具体实现是使用C#代码创建的,没有在xaml文件中实现(其实效果一样),运行程序发现,DataGrid只可以正常呈现数据集一次,只要我把鼠标放到DataGrid的边框左边或数据单元中点击一下,数据列马上就消失了,数据也看不到了,我用一个信息框打开看到Items.Count>0,Columns.Count=0!

操作截图如下:

1)正常打开数据。

疑问:WPFToolkit中的DataGrid数据列为何会意外丢失?_第1张图片

2)打开数据之后鼠标在UserControl的DataGrid中点击。

疑问:WPFToolkit中的DataGrid数据列为何会意外丢失?_第2张图片

注意:不能点击DataGrid那个左边框(类似RowHeader),不然程序会崩溃,出现致命错误。错误信息如下:

未处理 System.ArgumentOutOfRangeException
  Message="The given DisplayIndex is out of range.  DisplayIndex must be greater than or equal to 0 and less than Columns.Count.\r\n参数名: displayIndex\r\n实际值是 0。"
  Source="WPFToolkit"
  ParamName="displayIndex"
  StackTrace:
       在 Microsoft.Windows.Controls.DataGrid.ColumnFromDisplayIndex(Int32 displayIndex) 位置 C:\dd\WPF_1\src\wpf\src\ControlsPack\WPFToolkit\DataGrid\Microsoft\Windows\Controls\DataGrid.cs:行号 354

。。。。

很郁闷!

3)然后数据列不见了,点击上方的Button按钮查看没有Column了。

疑问:WPFToolkit中的DataGrid数据列为何会意外丢失?_第3张图片

4)运行时动态创建的包含了DataGrid的UserControl就可以正常显示操作数据。

疑问:WPFToolkit中的DataGrid数据列为何会意外丢失?_第4张图片

5)在另外的程序中单独使用这个UserControl也是正常的。

疑问:WPFToolkit中的DataGrid数据列为何会意外丢失?_第5张图片

 

请各位精通WPF的高手帮忙!(程序方面,我使用了RibbonControl和WPFToolkit两个控件包,程序主窗口基承自RibbonWindow,但反复测试过,这个问题与窗体是否为标准Window无关,而且与DataGrid中是否使用了Style也无关。)

(程序代码在这里:http://files.cnblogs.com/glowworm/GWControlLib%2bSQLEditor.rar

谢谢!

你可能感兴趣的:(datagrid)