我只是在学习 WPF,我将数据源中的一个表拖到一个为每一列生成 XAML 的窗口中。
其中一些列的名称导致以下问题:
<DataGridTextColumn x:Name="_Rev_UnitColumn" Binding="{Binding Path=Rev/Unit}" Header="Rev/Unit" Width="SizeToHeader" />
这会导致该列出现空白(像我一样)。
我只是在学习 WPF,我将数据源中的一个表拖到一个为每一列生成 XAML 的窗口中。
其中一些列的名称导致以下问题:
<DataGridTextColumn x:Name="_Rev_UnitColumn" Binding="{Binding Path=Rev/Unit}" Header="Rev/Unit" Width="SizeToHeader" />
这会导致该列出现空白(像我一样)。
在 MSDN 上有一篇关于属性路径的文章,其中有一个关于转义字符的部分:
在索引器 ([ ]) 中,插入字符 (^) 转义下一个字符。
您必须转义(使用 XML 实体)某些特定于 XML 语言定义的字符。使用 & 转义字符“&”。使用 > 转义结束标记“>”。
您必须转义(使用反斜杠 \)对 WPF XAML 解析器行为特殊的字符以处理标记扩展。
- 反斜杠 (\) 是转义字符本身。
- 等号 (=) 将属性名称与属性值分开。
- 逗号 (,) 分隔属性。
- 右花括号 (}) 是标记扩展的结尾。
斜杠未在此处列出,因此我不知道反斜杠转义是否有效,但您可以尝试。
(您究竟是如何拥有这样的属性名称的?在 XML 和 C# 中似乎都是非法的)
我(有点随机)试过:
<DataGridTextColumn x:Name="_Rev_UnitColumn" Binding="{Binding Path=[Rev/Unit]}" Header="Rev/Unit" Width="SizeToHeader" />
结果是一切都按我的预期工作。再看一遍,我猜 HB 的 MSDN 引用告诉了我这一点。当我读到那个(最初是在我发布这个问题之前在 MSDN 上,然后又在这里)时,我只是不明白“内部索引器 -- 逗号 -- 插入符号 (^) 转义下一个字符”是什么意思。