What is it about DataTable Column Names with dots that makes them unsuitable for WPF's DataGrid cont
- by Tom Ritter
Run this, and be confused:
<Window x:Class="Fucking_Data_Grids.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<StackPanel>
<DataGrid
Name="r1"
ItemsSource="{Binding Path=.}">
</DataGrid>
<DataGrid
Name="r2"
ItemsSource="{Binding Path=.}">
</DataGrid>
</StackPanel>
</Window>
Codebehind:
using System.Data;
using System.Windows;
namespace Fucking_Data_Grids
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataTable dt1, dt2;
dt1 = new DataTable();
dt2 = new DataTable();
dt1.Columns.Add("a-name", typeof(string));
dt1.Columns.Add("b-name", typeof(string));
dt1.Rows.Add(new object[] { 1, "Hi" });
dt1.Rows.Add(new object[] { 2, "Hi" });
dt1.Rows.Add(new object[] { 3, "Hi" });
dt1.Rows.Add(new object[] { 4, "Hi" });
dt1.Rows.Add(new object[] { 5, "Hi" });
dt1.Rows.Add(new object[] { 6, "Hi" });
dt1.Rows.Add(new object[] { 7, "Hi" });
dt2.Columns.Add("a.name", typeof(string));
dt2.Columns.Add("b.name", typeof(string));
dt2.Rows.Add(new object[] { 1, "Hi" });
dt2.Rows.Add(new object[] { 2, "Hi" });
dt2.Rows.Add(new object[] { 3, "Hi" });
dt2.Rows.Add(new object[] { 4, "Hi" });
dt2.Rows.Add(new object[] { 5, "Hi" });
dt2.Rows.Add(new object[] { 6, "Hi" });
dt2.Rows.Add(new object[] { 7, "Hi" });
r1.DataContext = dt1;
r2.DataContext = dt2;
}
}
}
I'll tell you what happens. The top datagrid is populated with column headers and data. The bottom datagrid has column headers but all the rows are blank.