4

WPF/XAML/Silverlight を学習しているときに、私が遭遇したほとんどすべての XAML/C# の例で、XAML に "Click" イベントがあり、Window または Page コンストラクターにはほとんどないことに少し驚いています。

最近は「非侵入型 Javascript」が強調されているため、実際に XAML/コード ビハインドを次のように構築する開発者が増えると思います。

XAML:

<Grid>
    <Button x:Name="btnEdit"/>
</Grid>

コードビハインド:

public Window1()
{
    InitializeComponent();

    btnEdit.Content = "Edit";
    btnEdit.Click += new RoutedEventHandler(btnEdit_Click);
}

private void btnEdit_Click(object sender, RoutedEventArgs e)
{
    btnEdit.Content = "This button was clicked.";
}

なぜこれが良い習慣なのか悪い習慣なのかについて何か考えはありますか?

4

4 に答える 4

6

小さな WPF の例のほとんどは、設計上の問題や優れたスタイルに焦点を当てることなく何が可能かという印象を与えるだけです。

実際のアプリケーションでは、XAML は宣言型プログラミングにのみ使用する必要があります。たとえば、コマンドをボタンにバインドしたり、データ バインディングを宣言したりします。Karl Shifflett は、MVVMパターンに関するいくつかの優れた記事を書いており、WPF/Silverlight アプリケーションの懸念事項を非常にうまく分離しています。

私の意見では、コードビハインドは小さなアプリケーションに適しています。ビュー、コントロール、データを混在させる傾向があります。

于 2009-02-19T08:58:19.770 に答える
1

私の記憶が正しければ、Visual Studio によって生成されたコードである上記の Init コードを実装する部分クラスがあると思います。WPF について話すことはできませんが、ASP.Net 2.0 でこれを行うため、ここでも同じことを行うと想定しています。これに慣れるのに永遠にかかりました。

同意します。マークアップでイベントを定義するのは嫌いです。

于 2009-02-19T08:43:19.820 に答える
0

私はあなたの懸念に同意します。

多くの議論の末、私たちは、非侵入型の超リーンXAMLと、コードビハインドでのコマンドとデータのバインドの同様のパターンに従っています。

XAMLにイベントを追加すると、イベントコードへのコンテキストメニューナビゲーションがあります。XAMLでコマンドをバインドする場合、同等のものはありません。XAMLのコマンド宣言から移動することはできますが、コントロールのCommandプロパティに割り当てられている場所から移動することはできません。

于 2009-06-23T01:23:48.190 に答える
-2

MVVM は悪い習慣です。Data と View を分離していると思います。そして何?XAML バインド、コマンドのバインド、メソッドへの変換、および INotifyPropertyChanged の実装による全体的なメカニズムは何ですか? UTests の場合 (私が作成しました - 私は構想をテストします)? 適切なソフトウェアは、ユーザーのテストでのみ必要です...それは、どこに何があるかわからなくなるような方法で分離されたコードです。

何のために INotify を使用しますか? どのMicrosoft ALL WPFコントロールとWPFのエンティティ全体が、魔法のDependencyPropertiesでFrameworkElementから継承されたのですか?

複数のバインドは、単語によるハード リソース手法です (MVVM の著者を参照)。

私は非常に複雑な 3D CAE システムをパターンなしで 1 年も経たないうちに作成しました... クラスとコード ビハインドを備えたアプリの古典的な編成を使用しました。 https://skydrive.live.com/?cid=ea6ad1087e3103f0&sc=写真&id=EA6AD1087E3103F0!103&sff=1#cid=EA6AD1087E3103F0&id=EA6AD1087E3103F0!118&sc=写真

MVVM のすべてのサンプルは Customers in Company に関するものです... MVVMCC パターン (Customer in Company) という名前を付けて提供します

于 2011-09-07T21:58:59.600 に答える