0

コード ビハインド ファイルで XAML で宣言された名前付きオブジェクトを見つけるのに問題があります。

ビュー内からビューモデルを初期化したい。ただし、コード ビハインド ファイルで ViewModel への参照も必要です (基本的に、ViewModel からは簡単に実行できないナビゲーション サポート、イベントの処理などのため)。

<navigation:Page.DataContext>
    <vm:JobsViewModel x:Name="ViewModel" />
</navigation:Page.DataContext>

ただし、コード ビハインドで ViewModel にアクセスしようとすると、null 参照例外が発生します。

    Protected Overrides Sub OnNavigatedTo(ByVal e As System.Windows.Navigation.NavigationEventArgs)
        MyBase.OnNavigatedTo(e)
        ViewModel.Initalize() '<-- Exception here
    End Sub

いくつかの調査では、FindName"ViewModel" の呼び出しInitalizeComponentが null を返すことが示されています。XAMLネームスコープなどを読んでみましたが、私が見る限り、これは単純なケースであり、うまくいくはずですよね?

これが失敗する理由についての指針をいただければ幸いです。ありがとう!

4

1 に答える 1

2

これは、あなたJobsViewModelがビジュアル ツリーの一部ではないためFindName、見つからないためです。DataContext代わりに、プロパティを介して取得できます。

于 2011-06-20T11:03:49.957 に答える