我正在以编程方式为DataGridColumn
制作绑定,如:
var path = "DictObj[" + key_str + "]";
column.Binding = new Binding(path);
它通常可以正常工作,但当key_str
包含commma时,列中的单元格不显示任何内容。我尝试了var path = "'...'"
,"\'...\'"
,"{}{...}"
,"'{}...'"
或"DictObj[[" + key_str + "]]"
但没有太多考虑,但是徒劳无功。
由于key_str
也用于显示目的,我不希望它删除它的逗号。有什么想法吗?
答案 0 :(得分:8)
传递给Binding
的路径用于构造PropertyPath
对象。该对象将逗号(,)视为特殊字符。你需要通过在逗号前面放置一个插入符号(^)来逃避它。所以,你的路径var应该是这样的:
var path = "DictObj[" + key_str.Replace(",", "^,") + "]";
根据PropertyPath XAML Syntax:"内部索引器([]),插入符(^)将转义下一个字符。"
注意:从XAML创建类似的绑定实际上需要在逗号前面有两个转义字符(^ \):
{Binding Path=Dict[Some^\,String]}