デバッガで単体テストをステップ実行すると、オブジェクトやプロパティを参照しているときにnull参照を取得する理由を誰でも説明できますか。たとえば、次のようにSilverlight MVVMユニットテストの説明
1 [TestMethod]
2 [Description("Test to confirm that upon initial class creation, the login view is loaded as the default content for the TaskRegion.")]
3 public void Shell_Initialisation_LoginViewIsLoadedByDefault()
4 {
5 Shell shell = new Shell();
6
7 TestPanel.Children.Add(shell);
8
9 Shell_ViewModel viewModel = shell.DataContext as Shell_ViewModel;
10
11 Assert.IsTrue(viewModel.TaskRegionContent is ContentControl);
12
13 EnqueueTestComplete();
14 }
[ライン9]私はシェルビューのDataContextのに私のViewModelフィールドを設定すると、私は「オブジェクトインスタンスに設定されていません...」例外を取得。私は自分のdatacontextが私のshell.xaml.csに設定されていることを知っています。全体ファイル:
1 using System.Windows;
2
3 namespace eg.WorkManager.UI.Shell
4 {
5 public partial class Shell
6 {
7
8 public Shell()
9 {
10 InitializeComponent();
11 this.Loaded += new RoutedEventHandler(Shell_Loaded);
12 }
13
14 void Shell_Loaded(object sender, RoutedEventArgs e)
15 {
16 this.DataContext = new Shell_ViewModel();
17 }
18 }
19 }
20
私は何か間違っていると知っていますが、誰でも何を説明することができますか?
あなたがあなたのコントロールが実際にビジュアルツリーにロードされたときに発生するイベントLoaded
、中にDataContext
を設定しているおかげで、 マーク
私は開発者ですが、古い習慣は辛く死ぬ;-)私はそれを試して、よりよい結果が得られるかどうかを見ていきます。ありがとう –