C# 涉及数据显示的非常奇怪的问题
我有一个DataGrid,定义如下:C# 涉及数据显示的非常奇怪的问题,c#,.net,wpf,xaml,user-interface,C#,.net,Wpf,Xaml,User Interface,我有一个DataGrid,定义如下: <DataGrid Name="dgResults" IsReadOnly="True" AutoGenerateColumns="True" AllowDrop="False" CanUserAddRows="False" CanUserDeleteRows="Fals
<DataGrid Name="dgResults"
IsReadOnly="True"
AutoGenerateColumns="True"
AllowDrop="False"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserReorderColumns="True"
CanUserResizeColumns="True"
CanUserResizeRows="False"
CanUserSortColumns="False"
ColumnWidth="120"
Margin="15,10,10,10"
Visibility="Collapsed"
ItemsSource="{Binding}"/>
从代码来看,您似乎只需要自定义列标题。如果是这样,您可能希望在XAML中显式定义列:
<DataGrid.Columns>
<DataGridTextColumn Header="Employee identification number"
Binding="{Binding Path=EmployeeID}"
</DataGridTextColumn>
<Insert other column definitions here/>
</DataGrid.Columns>
按照现在的方式,XAML解析器或任何东西似乎在寻找与列标题或类似内容匹配的属性名称,而没有在ItemsSource对象上找到与列标题匹配的属性。从代码中看,您似乎只需要自定义列标题。如果是这样,您可能希望在XAML中显式定义列:
<DataGrid.Columns>
<DataGridTextColumn Header="Employee identification number"
Binding="{Binding Path=EmployeeID}"
</DataGridTextColumn>
<Insert other column definitions here/>
</DataGrid.Columns>
按照现在的方式,似乎XAML解析器或任何东西正在查找与列标题或类似内容匹配的属性名称,而它没有在ItemsSource对象上查找与列标题匹配的属性。您可以显式地将数据网格列设置为这样,问题是,由于显式设置了标题,所以数据网格的显示内容受到限制。问题是,当您在autogeneratedColumn事件处理程序中设置标题时,文本块会像您所说的那样忽略下划线,但该点wpf不知道如何将列数据绑定到该标题。这就是绑定路径出错的原因。员工标识号是其试图绑定回dataview的内容,但在dataview中是其员工标识号。下面的解决方案解决了您的问题,但仅限于显示特定的数据视图。如果这不是一个问题,那么这就是你的解决方案
<DataGrid.Columns>
<DataGridTextColumn Header="Employee identification number"
Binding="{Binding Path=EmployeeID}"
</DataGridTextColumn>
<Insert other column definitions here/>
</DataGrid.Columns>
您可以显式地设置数据网格列,因为显式地设置了标题,所以此时数据网格的显示内容受到限制。问题是,当您在autogeneratedColumn事件处理程序中设置标题时,文本块会像您所说的那样忽略下划线,但该点wpf不知道如何将列数据绑定到该标题。这就是绑定路径出错的原因。员工标识号是其试图绑定回dataview的内容,但在dataview中是其员工标识号。下面的解决方案解决了您的问题,但仅限于显示特定的数据视图。如果这不是一个问题,那么这就是你的解决方案
<DataGrid.Columns>
<DataGridTextColumn Header="Employee identification number"
Binding="{Binding Path=EmployeeID}"
</DataGridTextColumn>
<Insert other column definitions here/>
</DataGrid.Columns>
这里的问题是,列标题中包含标点符号。删除标点符号解决了这个问题。希望有同样问题的人会读到这篇文章,因为我花了好几个小时才意识到。这里的问题是,列标题中涉及标点符号。删除标点符号解决了这个问题。我花了好几个小时才意识到,希望有同样问题的人会读到这篇文章。你能在绑定路径中添加空格吗?员工身份证号码你说的“安迪”是什么意思?这并不意味着是一个绑定路径——这是列的名称——摘自Microsoft AdventureWorks数据库。当我发现问题所在时,移到了这个问题:您甚至可以在绑定路径中放置空格吗?员工身份证号码你说的“安迪”是什么意思?这并不意味着是一个绑定路径,而是来自Microsoft AdventureWorks数据库的列名。当我发现问题所在时,我转到这个问题:谢谢你的回答。然而,我认为我找到了问题的根源,那就是专栏中的标点符号。在这里进一步解释:谢谢你的回答。然而,我认为我找到了问题的根源,那就是专栏中的标点符号。这里进一步解释:不幸的是,这是一个问题,因为它必须能够显示任何数据。看看这个,我已经定位了问题:我明白了,我认为唯一可以做到的方法是将列转换为可绑定的格式,也许还有另一个表包含标点标题,您可以查询并在事后动态创建带有标点的标题,但这将是一个绝对混乱的维护。不幸的是,这是一个问题,因为它必须能够显示任何数据。看看这个,我已经解决了这个问题:我明白了,我认为唯一可以做到的方法是将列转换成可绑定的格式,也许还有另一个包含标点标题的表,您可以在事后查询并使用标点动态创建标题,但这将是一个非常混乱的维护过程。