小さな Silverlight 3 テスト アプリケーションがあります。これは、Silverlight、XAML、バインディングなどを学習する演習です。3 つのプロパティを持つ小さなテスト クラス (Test) があります。Val1、Val2、および合計。次のように XAML でリソースを宣言しました。
<UserControl.Resources>
<app:Test x:Name="xamlTestObj"></app:Test>
</UserControl.Resources>
ユーザーコントロールにボタンがあります。このボタンのコード ビハインドは次のようになります。
xamlTestObj.Val1 += 100;
xamlTestObj.Val2 += 300;
ソリューションは正常にビルドされますが、実行すると、xamlTestObj を参照するときにボタン ハンドラーで NullReferenceException が発生します。ユーザー コントロールのリソース リストからオブジェクトを引き出すと、ボタン クリックを正常に実行できました。お気に入り:
Test xamlTestObj = (Test)Resources["xamlTestObj"];
xamlTestObj.Val1 += 100;
xamlTestObj.Val2 += 300;
私を混乱させているのは、リソース リストからオブジェクトを引き出す必要がある理由です。コンパイラが xamlTestObj 参照を参照できる場合、それが宣言されているスコープ (この場合はユーザー コントロール) の有効期間中は "ライブ" である必要があるように思えます。WPF コントロールはこのように動作します。つまり、ユーザー コントロールに配置した任意のテキスト ボックスとボタンにアクセスできます。
誰かが私のためにこれをクリアできますか?
ありがとう :-)