WPF将文本框绑定到通用列表中所有项的属性

时间:2010-12-23 14:39:38

标签: wpf binding

我想做的很简单。我有一个通用的对象列表。假设对象类包含名为Height的属性。我想要做的是将UI中的文本框文本与此列表绑定,当我更改文本框中的值时,列表中的所有对象都会更新其高度值。我是WPF的新手,我研究了MVVM模式,我可以做简单的数据绑定,但我无法弄清楚如何做到这一点:'(谢谢!

2 个答案:

答案 0 :(得分:2)

我有一个ViewModel的属性(让我们称之为ObjectHeight),它绑定到TextBox的文本值。当text属性发生变化时(即在ObjectHeight的set中),进行验证以检查它是否为有效值,然后遍历对象列表(我猜你是从模型中获取)设置高度属性在每个。

答案 1 :(得分:0)

你必须以另一种方式进行绑定 - 也就是说,不要使用xaml绑定到单个对象的Height属性,而是使用代码隐藏来为列表中的每个对象添加绑定。

像这样(未经测试):

Binding binding = new Binding("Text");
binding.source = TheTextBox;
binding.Mode = BindingMode.OneWay;
foreach (var o in myList)
o.setBinding(TheElementType.HeightProperty, binding);

也许你必须为每个目标对象创建一个绑定对象;并且Object的Height属性可能必须是DependencyProperty。