【发布时间】:2010-12-13 10:42:57
【问题描述】:
我有一个像这样绑定到子视图的主视图(支持属性的类型为object):
<ContentControl Content="{Binding WalletsView}"/>
现在,我在相应的视图模型中添加了另一个属性,即
public SmartObservableCollection<Selectable<Type>> PriceGrabbers {get; private set;}
其中SmartObservableCollection 派生自ObservableCollection,以便更轻松地进行多线程更新。
现在我得到很多绑定错误(实际上,子视图模型中的 all 绑定通过调试窗口运行)像这样(有趣的是,如果我再次删除 PriceGrabbers 属性,所有错误消失):
System.Windows.Data 错误:40:BindingExpression 路径错误:在“对象”“MainWindowViewModel”(HashCode=30986197)上找不到“OverviewHidden”属性。 BindingExpression:Path=OverviewHidden; DataItem='MainWindowViewModel' (HashCode=30986197);目标元素是'ColumnDefinition'(HashCode=22768693);目标属性是“NoTarget”(类型“对象”)
因此绑定引擎显然会尝试在主视图模型上查找所有绑定。 绑定工作得很好。虽然这没关系,但我宁愿让错误消失。有没有人遇到过这个问题,如果有,你们是怎么解决的?
【问题讨论】:
-
MainWindowViewModel 是否有一个名为 OverviewHidden 的属性?
-
不,它没有。所有绑定失败都来自子视图。 MainViewModel 做了两件事:a) 提供主菜单 b) 将所有其他视图放在选项卡控件中。因此,显然子视图首先尝试使用错误的 ViewModel 作为 DataContext。绑定工作正常。