我正在以编程方式为 DataGridColumn
进行绑定(bind),例如:
var path = "DictObj[" + key_str + "]";
column.Binding = new Binding(path);
它通常可以正常工作,但是当 key_str
包含逗号时,列中的单元格不显示任何内容。我试过(没有太多考虑)var path = "'...'"
, "\'...\'"
, "{}{. ..}"
、"'{}...'"
,或者,"DictObj[["+ key_str + "]]"
,但在徒劳的。
由于 key_str
也用于显示目的,我不希望它删除它的逗号。有什么想法吗?
最佳答案
传递给 Binding
的路径用于构造 PropertyPath
对象。该对象将逗号 (,) 视为特殊字符。您需要通过在逗号前面放置一个插入符号 (^) 字符来对其进行转义。因此,您的路径变量应如下所示:
var path = "DictObj[" + key_str.Replace(",", "^,") + "]";
根据PropertyPath XAML Syntax : "在索引器 ([ ]) 内,插入字符 (^) 转义下一个字符。"
注意:从 XAML 创建类似的绑定(bind)实际上需要在逗号前添加两个转义字符 (^\):
{Binding Path=Dict[Some^\,String]}
关于wpf - 包含逗号作为绑定(bind)路径的字典字符串键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30432446/