当在XAML中使用ViewModel DataTemplate创建视图时,绑定表达式错误



这是一个WPF应用程序

背景:

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

在向导中单击next或previous时,将设置适当的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}"/>
    

BindingExpression错误并不危险,据我所知,它只是减慢了你的应用程序。

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

相关内容

  • 没有找到相关文章

最新更新