ContentPresenter发生奇怪的BindingExpression路径错误

时间:2013-11-05 19:17:03

标签: c# wpf xaml mvvm binding-expressions

在我的程序中,我有一个包含contentPresenter的mainWindow。 mainWindow有一个名为MainWindowViewModel的ViewModel。此viewModel包含绑定到mainWindow中项目的属性。

Content的{​​{1}}由UserControl-> ViewModel->模型结构表示。

这是我正在使用的contentPresenter的xaml。

MainWindow.xaml:

contentPresenter

<ContentPresenter Content="{Binding LeftWidget}" IsEnabled="{Binding LeftWidgetEnabled}" ... /> LeftWidget都是位于LeftWidgetEnabled的属性。但是,我收到的MainWindowViewModelBindingExpression path error有关。出于某种原因,我的程序正在查找LeftWidgetEnabled的UserControl的ViewModel中的属性。这对我来说没有多大意义,因为该程序正确处理contentPresenter属性。

这两个属性都位于LeftWidget,那么为什么程序会在其他地方查找MainWindowViewModel属性?我该如何解决这个问题?

另请注意: 我设置UserControls的LeftWidgetEnabled的方式是这样的......

在mainWindow.xaml中的DataContext下:

<Window.Resources...

2 个答案:

答案 0 :(得分:1)

将绑定路径设置为(这假设主窗口实际上是一个窗口对象):

IsEnabled={Binding DataContext.LeftWidgetEnabled, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}

这有帮助吗?如果是这样,那么您需要检查对象的datacontext,因为可能还有其他内容

另外,LeftWidgetEnabled的数据类型是否与IsEnabled属性的预期匹配,即boolean为boolean?

答案 1 :(得分:0)

如果LeftWidget和LeftWidgetEnabled在同一个datacontext中,并且LeftWidget正在工作。然后我会说你应该检查你的viemodel中的属性是否真的 LeftWidgetEnabled

xaml对我来说很好。

编辑:LeftWidgetEnabled应该是boof而不是bool?