5

winforms では、イベントが発生するのを待っているメッセージ ポンプがあります。イベントが発生すると、C#の適切なイベント ハンドラーが呼び出されます。

WPF には XAML もあります。それはいつ実行されますか?C# コードがそれを呼び出しますか、それとも C# コードを呼び出しますか? つまり、イベントによって C# コードの実行がトリガーされるのか、それとも XAML の実行がトリガーされるのか?

4

3 に答える 3

2

WPF は、winforms からのものの流れに実際には違いがないようです (私が間違っている場合は修正してください)。メッセージ ポンプは C# イベント ハンドラーを呼び出し、フォームの初期化はInitializeComponentメソッドで行われます。

違いはInitializeComponent、WPF フォームのメソッドには XAML ファイルの解析が含まれるため、基本的に、開発者は C# ではなく XAML を使用してフォームの最初の外観を記述することです。

(もちろん、「C#」は「VB」と交換できます。)

于 2012-06-18T11:30:26.463 に答える
1

これがwpfアプリケーションとその「ライフサイクル」に関する情報です。 http://msdn.microsoft.com/en-us/library/ms743714.aspx

そして、InitializeComponentとそれがXaml解析に結び付ける役割についての情報があります。 InitializeComponent()は何をし、WPFではどのように機能しますか?

Xaml解析に関するより公式な投稿を見つけることができるかどうかを確認します。

http://msdn.microsoft.com/en-us/library/aa970678.aspxから

"XAMLファイルはマークアップコンパイラによって解析されます。

そのXAMLに対してコンパイルされた表現が作成され、obj\Releaseフォルダーにコピーされます。

新しい部分クラスのCodeDOM表現が作成され、obj\Releaseフォルダーにコピーされます。

さらに、言語固有のコードファイルがすべてのXAMLファイルに対して生成されます。たとえば、Visual BasicプロジェクトのPage1.xamlページの場合、Page1.g.vbが生成されます。C#プロジェクトのPage1.xamlページの場合、Page1.g.csが生成されます。ファイル名の「.g」は、マークアップファイルの最上位要素(PageやWindowなど)の部分的なクラス宣言を持つファイルが生成されたコードであることを示します。クラスは、C#(Visual BasicではExtends)で部分修飾子を使用して宣言され、他の場所(通常は分離コードファイルPage1.xaml.cs)にクラスの別の宣言があることを示します。「」

于 2012-06-17T20:27:09.640 に答える
0

XAML-Parser はそれを解析し、そこからそれぞれの CLR オブジェクトを作成します。

于 2012-06-17T20:10:32.397 に答える