zoukankan      html  css  js  c++  java
  • 疑问: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)正常打开数据。

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

    注意:不能点击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了。

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

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

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

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

    谢谢!

  • 相关阅读:
    Freemarker与Springmvc
    Freemarker与普通java
    Freemarker与Servlet
    跳舞的时间插件
    video标签播放视频
    字符串反转
    菲波拉契数列
    求所有子数组的和的最大值
    Spring AOP 5种通知与java动态代理
    线程维护日志队列
  • 原文地址:https://www.cnblogs.com/glowworm/p/1753466.html
Copyright © 2011-2022 走看看