这是一个WPF应用程序
背景:我实际上有一个向导应用程序。向导通过提供viewmodel列表来初始化。这些viewmodel将基于我的XAML中的一些DataTemplate创建适当的视图。
在向导中单击next或previous时,将设置适当的ViewModel,并根据DataTemplate加载视图。
问题:
当我处于过渡状态时…这意味着新的viewModel正在被加载,似乎有一段时间以前的VIEW仍然被引用。正因为如此,我得到了一堆BindingExpression错误,它说它找不到一堆实际存在于PREVIOUS viewModel上的绑定。
我正在加载一个基于DataTemplate的新视图。当该视图最初加载时,它似乎与实际的viewModel不同步。因此,我得到了一堆绑定表达式错误。两个问题:
- 对如何解决这个问题有什么想法吗?
有这些BindingExpression错误的危险吗?
<wiz:WizardContent.Resources> <!--DataTemplates for defining views for this Wizard--> <DataTemplate DataType="{x:Type viewModel:Step1ViewModel}"> <view:Step1 DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}, Path=DataContext.CurrentPageVM}"/> </DataTemplate> <DataTemplate DataType="{x:Type viewModel:Step2ViewModel}"> <view:Step2 DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}, Path=DataContext.CurrentPageVM}"/> </DataTemplate> <DataTemplate DataType="{x:Type viewModel:Step3ViewModel}"> <view:Step3 DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}, Path=DataContext.CurrentPageVM}"/> </DataTemplate> </wiz:WizardContent.Resources> <ContentControl Content="{Binding Path=CurrentPageVM}"/>
BindingExpression错误并不危险,据我所知,它只是减慢了你的应用程序。
关于您的代码,我不确定您是否需要在每个视图中定义DataContext,因为它会自动接受DataType检测到的DataContext。