1

这是一个 WPF 应用程序。

背景:

我基本上有一个向导应用程序。通过提供 ViewModel 列表来初始化向导。这些 ViewModel 将基于我的 XAML 中的一些 DataTemplate 创建适当的视图。

在向导中单击下一个或上一个时,将设置适当的 ViewModel,并根据 DataTemplate 加载视图。

这工作正常。

问题:

当我处于暂时状态时......意味着正在加载新的 viewModel,看起来有一小段时间仍然在引用前一个 VIEW。因此,我收到一堆 BindingExpression 错误,它说它找不到一堆实际存在于 PREVIOUS viewModel 上的绑定。

摘要:我正在加载一个基于 DataTemplate 的新视图。最初加载该视图时,它似乎与实际的 viewModel 不同步。因此,我得到了一堆绑定表达式错误。

两个问题:

  1. 关于如何解决这个问题的任何想法?
  2. 出现这些 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}"/>
    

4

1 回答 1

0

BindingExpression 错误并不危险,据我所知,它只会稍微减慢您的应用程序。

关于您的代码,我不确定您是否需要在每个视图中定义 DataContext,因为它会自动采用 DataType 检测到的 DataContext。

于 2013-04-26T13:44:35.400 回答