1

これは WPF アプリケーションです。

バックグラウンド:

私は基本的にウィザードアプリケーションを持っています。ウィザードは、ViewModel のリストを提供することによって初期化されます。これらの ViewModel は、XAML の DataTemplate に基づいて適切なビューを作成します。

ウィザードで [次へ] または [前へ] をクリックすると、適切な ViewModel が設定され、DataTemplate に基づいてビューが読み込まれます。

これはうまくいきます。

問題:

私が一時的な状態にあるとき...新しいviewModelがロードされていることを意味し、以前のVIEWがまだ参照されている短い時間があるようです。このため、以前のビューモデルに実際に存在した一連のバインディングが見つからないという BindingExpression エラーが多数発生します。

概要: DataTemplate に基づいて新しいビューを読み込んでいます。そのビューが最初にロードされたとき、実際のビューモデルと同期していないように見えます。そのため、束縛式のエラーが発生します。

2 つの質問:

  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