如何以编程方式绑定二维ObservableCollection至TextBox?
解决ObservableCollection嵌套集合的TextBox绑定问题
你的代码存在两个关键问题导致绑定失效:
绑定路径写法错误
当Source已设置为exportData时,PropertyPath无需再指定集合名称,直接用索引器语法访问嵌套元素即可。原代码里的new PropertyPath("exportData", i, j)写法错误,正确路径应为new PropertyPath($"[{i}][{j}]")。绑定目标属性错误
你创建的是TextBox控件,但绑定目标用了TextBlock.TextProperty,这会导致绑定无法关联到TextBox的Text属性,应改为TextBox.TextProperty。
修正后的代码如下:
txtBlock = new TextBox(); Binding txtBind = new Binding(); txtBind.Source = exportData; // 使用正确的索引器路径访问嵌套集合元素 txtBind.Path = new PropertyPath($"[{i}][{j}]"); // 绑定到TextBox的Text属性 BindingOperations.SetBinding(txtBlock, TextBox.TextProperty, txtBind);
如果需要双向绑定(修改TextBox内容后同步回集合),需确保内外层ObservableCollection都能正确触发集合变更通知;若仅单向显示,上述修正即可生效。
内容的提问来源于stack exchange,提问作者Dane Brazinski
相关产品推荐
相关产品推荐

