2017-04-21 17 views
0

我有一个wpf用户控件,绑定到数据表的数据网格。列是自动生成的。出于某种原因,绑定的布尔值不会显示为已检查。我有的文本列正确显示。这里是我的代码有:WPF - 将数据网格绑定到数据表,自动生成的列,布尔值没有标记为检查

XAML:

<DataGrid 
    ItemsSource="{Binding Data.DefaultView}" 
    Grid.ColumnSpan="2" 
    CanUserAddRows="False" 
    CanUserDeleteRows="False" 
    CanUserReorderColumns="False" 
    CanUserSortColumns="False" 
    CanUserResizeColumns="True" 
    CanUserResizeRows="True" 
    /> 

代码在视图模型:

public void SetupDataTable() 
    { 
     this.Data = new DataTable(); 

     var column = this.Data.Columns.Add("#", typeof(int)); 
     column.ReadOnly = true; 
     column = this.Data.Columns.Add("Description", typeof(string)); 
     column.ReadOnly = true; 
     column = this.Data.Columns.Add(this.CurrentReliefDevice.ToString(), typeof(bool)); 
     column.ReadOnly = true; 

     foreach (var reliefDevice in this.OtherReliefDevices) 
     { 
      this.Data.Columns.Add(reliefDevice.ToString(), typeof(bool)); 
     } 

     foreach (var pipeItem in this.PipeItems) 
     { 
      var dataRow = this.Data.NewRow(); 

      dataRow[0] = pipeItem.PipeItemNumber; 
      dataRow[1] = pipeItem.PipeItemType?.ShortName; 
      dataRow[2] = true; 

      var array = this.OtherReliefDevices.ToArray(); 
      for (var i = 0; i < array.Count(); i++) 
      { 
       dataRow[i + 3] = pipeItem.AssociatedReliefDevices.Contains(array[i]); 
      } 

      this.Data.Rows.Add(dataRow); 
     } 

     this.Data.AcceptChanges(); 
    } 
+0

似乎适合我。 – AQuirky

+0

具体来说,我所看到的是dataRow [2]没有在网格中显示,即使它被设置为true。 –

回答

0

我想通了。它与绑定无关。我的列标题在运行时可用,其中包含句点“。”。在他们中。这显然是中断列标题的问题。当我删除期间,它工作得很好。

相关问题