【发布时间】:2013-04-19 17:13:35
【问题描述】:
这是一个 WPF 应用程序。
背景:
我基本上有一个向导应用程序。通过提供 ViewModel 列表来初始化向导。这些 ViewModel 将根据我的 XAML 中的一些 DataTemplate 创建适当的视图。
在向导中单击下一个或上一个时,将设置适当的 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}"/>
【问题讨论】:
-
需要查看视图模型代码,您是否在视图模型属性上实现 inotifypropertychanged?
-
谢谢,今晚我回家后会补充的
标签: wpf xaml mvvm binding viewmodel