24

WPF と XAML について学べば学ぶほど、GUI の初期化とイベント処理のグルーのほとんどすべてを XAML またはコード (C# コードまたは VB.Net コードなど) で実行できることがわかりました。

私の質問は、WPF に長く取り組んできた人、そして理想的には WPF でアプリを出荷した人です。XAML とコードの間で「線を引く」のに最適な場所はどこでしたか? 可能な限り XAML を使用しましたか? コーディングしていない UI デザイナーとやり取りするのはどこだけですか?

この分野のヒントは、私自身や、WPF プログラミングを始めたばかりで、私たちができるすべての選択に麻痺している他のコーダーにとって非常に役立ちます!

4

8 に答える 8

19

私が注目することの 1 つは、モデル - ビュー - ビュー モデル パターンです。これは非常にエレガントなパターンで、xaml を含むすべてを自然に素敵なバケツに分けます。

たとえば、開発者と設計者の間の明確な境界を維持するのに役立ち、テスト駆動開発も可能になります。

そこにはたくさんの情報がありますが、John Gossman のブログ投稿から始めましょう。

更新: MV-VM に関する多くの有益な情報を含む別の StackOverflow投稿を 人々に紹介したいだけです。

于 2008-10-08T10:40:18.393 に答える
14

1 つのヒントは、XAML でイベント ハンドラーを宣言しないことです。代わりに、要素に名前を付けて、コード ビハインドでイベント ハンドラーをアタッチします。これにより、デザイナーと開発者を明確に分離できます。

于 2008-10-08T09:42:13.533 に答える
6

もう 1 つのヒントは、XAML を機能的なものと美的なものに分けることです。開発者は通常、機能的な XAML で作業しますが、デザイナーは主に美学を重視します。これにより、機能的な XAML を理解するのが非常に簡単になります。開発者はこのような XAML を編集する必要があることが多いため、これは重要です。美的 XAML は、通常、デザイナーがツールを使用して編集するため、簡潔さと冗長性はあまり問題になりません。

私はこれについて少し前にここにブログ投稿をしました。

于 2008-10-08T09:51:35.387 に答える
4

XAMLが codeであるという事実を見失わないでください。宣言型ですが、それでもプログラミング言語です。実際、.NET コンパイラが処理できるように IL に変換される前に、C# または Visual Basic に変換されます。

Scott Whitlock のコメントに同意します。MVVM は、懸念事項を分離し、アーキテクチャの詳細に集中するための優れた方法です。コード ビハインドに何か、特に彼が説明しているものを入れることは、本当に本当に問題ありません。デザイナーを開発者から分離する必要がない場合は、MVVM パターンを特定のニーズに合わせてください。それについて自分自身を純粋に、または理想主義的になろうとしないでください。

また、ICommand クラスを使用して柔軟にコマンドを実行する必要がない場合は、ViewModel のメソッドへの呼び出しを View のコード ビハインドに配置してもまったく問題ありません。または、作成している View が常に、作成している ViewModel クラスにバインドされることがわかっている場合。または、さらに一歩進んで、ViewModel のインターフェイスを定義し、そのインターフェイスの実装にのみバインドすることもできます。その後、いつでも ViewModel を交換できます。

そのようなもの。

于 2010-07-15T03:47:36.540 に答える
3

Mode-View-ViewModel のような適切なパターンに従うと、XAML 側でより多くのことを行う機会が得られ、コード ビハインドは少なくなります。WPF コードでのRoutedEventsCommandsの使用を最大化します。

于 2008-10-08T17:09:03.490 に答える
2

UserControls をビルドするときは、可能な限り Xamlize を試みます。

この分野で見つけたヒントの 1 つは、*** を手動で作成するのは本当に面倒だということです... 私はいつも XAML でそれらを書きますControlTemplate....DataTemplates

于 2008-10-08T10:11:56.843 に答える
1

Bindingcommands、などを使用してstyles、できるだけ多くの xaml を使用すると言えますtemplates。 XAMLReader/XAMLWriter を使用してテンプレートを保存およびロードする機能をサポートする必要がありました。

于 2010-05-27T08:28:48.987 に答える