gpt4 book ai didi

wpf - 无法将 WPF DataGrid 绑定(bind)到具有带有空格和其他特殊字符的名称的列的表

转载 作者:行者123 更新时间:2023-12-01 02:38:53 28 4
gpt4 key购买 nike

当我有一个简单的DataSet具有简单列名(即没有空格或句点)的表,如下代码可以正常工作:

  DataGrid resultsGrid=...; // Actually defined in the XAML
DataSet ds=...; // The is the DataSet that contains one table
Binding binding = new Binding();

resultsGrid.DataContext=ds.Tables[0];
resultsGrid.SetBinding(DataGrid.ItemsSourceProperty, binding);

上例中的 DataGrid 有 AutoGenerateColumns属性设置为 True并从 DataSet 中的表中正确填充其数据.

但是,如果我的表的名称包含空格/句点或其他特殊字符,则自动绑定(bind)似乎失败。我收到以下错误:

System.Windows.Data Information: 20 : BindingExpression cannot retrieve value due to missing information. BindingExpression:Path=My Col. Name; DataItem='DataRowView' (HashCode=8146871); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')



显然,自动生成的绑定(bind)表达式 Path=My Col. Name无效。整个路径需要“引用”以允许空格和句点。有什么方法可以坚持 AutoGeneratedColumns对于具有更复杂列名的表,还是我现在必须全部手动?

最佳答案

您可以尝试处理 resultsGrid.AutoGeneratingColumns - 或者更可取的是,在集合获取数据之前仅对网格执行此操作 - 以替换或删除列名中的空格或句点。但是,您必须对网格和 DataSet 都执行此操作,因此如果您的数据被编辑和保存,这种方法可能会比它的值(value)要麻烦得多。这样做的效率和可行性在很大程度上取决于您的应用程序的结构和行为,而且我还没有测试过它,所以对它持保留态度。

据我发现(诚然,这不是一个非常广泛的领域),你几乎被这种行为所困扰。我建议向微软提交一个错误;这似乎是 AutoGenerateColumns 的理想行为.

关于wpf - 无法将 WPF DataGrid 绑定(bind)到具有带有空格和其他特殊字符的名称的列的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9067648/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com