问候乡亲们! 我遇到了一个WPF数据绑定问题,我希望你能帮忙。我是新来的WPF,但一个expereienced开发人员(VB 3.0-6.0,C#)。XAML内联数据绑定不起作用;绑定作品背后的代码
这里是场景: 我有一个名为MasterPartsData的C#项目,其中包含了许多不同类型的部件(电容器,二极管等)的类。它们从一个名为clsPart的基类继承而来。我有另一个C#WPF项目,其中包含WPF UserControls(以及一个MainWindow),以直观地表示存储在一个单独的MasterPartsData(MPD)对象中的值。我在usercontrol中创建了一个私有字段,用getter和setter来保存对象。
如果我创建在设定器的结合显式填充的对象:
_capacitor = value;
Binding binding = new Binding();
binding.Source = _capacitor;
binding.Path = new PropertyPath("C0uf");
this.txtC0uf.SetBinding(TextBox.TextProperty, binding);
(与_capacitor作为私有对象变量和C0uf为属性名) 值正确显示。
但是我不希望在后面的代码中明确创建每个绑定。我的首选是在XAML中内联创建绑定,也许使用指向该对象的DataContext。
不幸的是,我试过的每一个不同的排列都失败了;该文本框不显示数据。
我有几个怀疑: 1)绑定是正确的,但文本框需要刷新。 2)绑定混淆了私有变量和属性。 3)也许类在不同的项目中定义的事实是造成问题。 4)我生气了,应该在有人受伤前检查自己进入庇护所。 :)
任何帮助,您可以提供将不胜感激。我非常乐意添加更多信息,但并不希望将问题与页面和源代码页面混淆起来。
非常感谢您提供的信息!我开始看到ModelView在哪里发挥作用。在我的情况下,我有一个包含多个其他类的对象。 ModelView本质上给出了层次结构的'平面'视图,所以XAML只有一个数据上下文来处理。正确? – Falconeer 2010-07-12 16:02:15
或多或少正确,但MVVM模式仍然只是一种模式;在执行该模式的数据绑定合同中没有任何固有的东西。在层次结构中,您可以为用户控件的子元素指定其他数据上下文,这可能会破坏良好的架构理念。对我而言,使ViewModel具有处理数据绑定细节(双向或单向,以及站点转换器的地方)的一点并不需要您修改模型中的代码。 – 2010-07-12 17:36:06