在我的程序中,我有一个包含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
的属性。但是,我收到的MainWindowViewModel
与BindingExpression path error
有关。出于某种原因,我的程序正在查找LeftWidgetEnabled
的UserControl的ViewModel中的属性。这对我来说没有多大意义,因为该程序正确处理contentPresenter
属性。
这两个属性都位于LeftWidget
,那么为什么程序会在其他地方查找MainWindowViewModel
属性?我该如何解决这个问题?
另请注意: 我设置UserControls的LeftWidgetEnabled
的方式是这样的......
在mainWindow.xaml中的DataContext
下:
<Window.Resources...
答案 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?