wpf datatable列名不能有斜杠/

时间:2014-10-23 21:43:56

标签: c# wpf wpf-controls wpfdatagrid

我对WPF很新。 我做一张桌子时有一个非常奇怪的问题, 这是我的代码:

DataTable table = new DataTable();
table.Columns.Add("request/sec", typeof(string));
DataRow newRow = dataTable.NewRow();
newRow["request/sec", "na");

但它只显示一个列名称为" request / sec"和一个空行

然而,如果我这样做:

DataTable table = new DataTable();
table.Columns.Add("test(request/sec)", typeof(string));
DataRow newRow = dataTable.NewRow();
newRow["test(request/sec)", "na");

然后它正常工作,它正确显示列名称,以及值为&#34的行; na"

我不知道为什么会这样,我知道这听起来很荒谬。 有人可以帮忙吗?

注意:我也试过" //"," /"," \ /",@ 我不能硬编码列名,它是由某些逻辑生成的动态,我使用上面的代码作为例子

2 个答案:

答案 0 :(得分:1)

当属性名称包含一些保留字符(如./)时,存在创建绑定的问题。属性路径解析器只是不处理它们。你有几个选择:

  1. 不要让网格自动生成列,而是自己定义它们,对于具有保留字符的列,绑定到数据行的索引器而不是列名:

    <DataGridTextColumn Binding="{Binding Path=[request/sec]}" Header="request/sec" />
    
  2. 如果您只关心列名,因为您想要控制列标题文本,只需手动声明列,为列提供“合法”名称,然后像上面一样设置Header

答案 1 :(得分:0)

Data don't show up when bind ItemsSource of a WPF DataGrid to a DataTable which contains columns like '01/14/10' - MS WPF forum讨论了这个问题。

简而言之,自2010年3月22日起,这声称是一个WPF工具包错误,并且引用了与其他一些角色报告类似问题的故障单。