2011-02-01 30 views
4

すべてのクライアントプロジェクトを.NET 4にアップグレードし始めました。私たちはWPFを使用しています。私のすべてのビューは、UserControlを拡張する基本クラスから継承しています。これは、BaseViewという単一の汎用型引数を持つコードのみの基本クラスです。 .NET 4にアップグレードする前に、x:TypeArgumentを指定してすべて正常に動作しましたが、アップグレード後にInitializeComponent()呼び出しでNullReferenceExceptionが発生しました。 xamlファイルはPageとMsBuild:Compileに設定されていますが、どこか読んだらビルドさえしないので、Resourceに設定しようとしました。 AddressView:BaseViewと言って、それを継承するコードファイルを作成し、それを使用すればうまくいきます。代わりにXAMLファイルの型引数を指定し続ける方法はありますか?WPF 4へのアップグレード時のInitializeComponentからのジェネリック型引数

更新:より深い例外/スタックトレースの追加: オブジェクト参照がオブジェクトのインスタンスに設定されていません。

スタックトレース:System.Windows.Markup.WpfXamlLoader.TransformNodesで

(XamlReader xamlReader、XamlObjectWriter xamlWriter、ブールonlyLoadOneNode、ブールskipJournaledProperties、ブールshouldPassLineNumberInfo、IXamlLineInfo xamlLineInfo、IXamlLineInfoConsumer xamlLineInfoConsumer、XamlContextStack`1スタック、IStyleConnector styleConnector System.Windows.Markup.WpfXamlLoader.Load(xamlReader xamlReader、IXamlObjectWriterFactory writerFactory、ブールskipJournaledPropertiesで) 、rootObject、XamlObjectWriterSettings設定、ウリBASEURI)

UPDATE 2オブジェクト:たぶん、あなたは正しい、私だけにアップグレードseparaを同じプロジェクトで、同じ基本クラスから継承したエラーを同じマシンで取得することはありません。それは非常に奇妙で、問題を見つけようとするために、問題のあるビューから項目を削除し始めます。

答えて

3

あなたのコードにはエラーがスローされているようです。これは、デバッガでより高いレベルの例外処理を設定することで確認できます。

Visual StudioでCtrl + Alt + Eキーを押して[例外]ウィンドウを開き、[共通言語ランタイム例外]が両方の列でオンになっていることを確認してからコードを実行します。

エラーが発生しているコード行で実行が中断しますが、そこから修正するのは簡単なはずです(コードと例外テキストを投稿しない場合)。

enter image description here

+0

ええ、私は既にそれを試していますが、まだInitializeComponent()行に直接スローし、それにステップインしようとしても同じことをしますが、XAMLの最初の行にコントロールが定義されます。ビューの上では少し例外がスローされますが、私はグーグルでそれを試みましたが、関連性があると思われるものは何も得られず、その例外を持つオリジナルのポストを更新します。 – dariusriggins

+0

InitializeComponentで取得したスタックトレースを投稿できますか?実際には、問題の原因に近いため、マークアップで表示される例外よりもはるかに便利です。 –

2

これは、ジェネリック型引数だ - それは3.5で動作するように使用されます。 WPFでは

と.NET Frameworkのバージョン4をターゲットにするとき、あなたはXAML 2009はXと一緒に機能を使用することができます:TypeArgumentsだけ(コンパイルマークアップされていないXAML)緩いXAMLのためhttp://msdn.microsoft.com/en-us/library/ms750476.aspxから。マークアップでコンパイルされたXAML for WPFおよびBAML形式のXAMLは、現在XAML 2009のキーワードと機能をサポートしていません。 XAMLをマークアップする必要がある場合は、「XAML 2006およびWPF汎用XAMLの使用」の節に記載されている制限の下で操作する必要があります。

関連する問題