1

私はを持っていてUserControl、それはを含んでいButtonます。さて、いくつかのウィンドウでは、これを表示したくありませんButton。これを達成するために、2つのオプションがあります。

  1. DPを作成します。
  2. DPを作成する代わりに、viewModelのプロパティで直接バインドします。

上記の2つのオプションのどちらを使用する必要がありますか?

アップデート:

私も第三の道を見つけました。

バインドされたコマンドのCanCommandExecuteでfalseを渡しているため、IsEnabledがfalseになります。

Converterを使用してIsEnabledとVisibilityを使用しています。

このソリューションはどのように機能しますか?

4

4 に答える 4

2

VisibilityのプロパティIsVisible(ViewModelがDependencyObjectではなくINotifyPropertyChangedの実装である限り、ここではDPは必要ありません)を持つことが最もクリーンな方法です。これにより、ボタンコマンドのCanExecuteを呼び出すこともできます。そうすることで、何らかの方法で可視性を変更したいことを明確に表現し、それにバインドします。

于 2012-06-20T05:49:12.460 に答える
1

DPを作成することは、よりクリーンな実装方法であり、後者は迅速で汚い方法です。

于 2012-06-20T05:06:17.520 に答える
1

CanCommandExecuteは、私がよりクリーンになり、c#コードの数が少なくなるため、これに最適なソリューションになります。

于 2012-06-20T06:06:03.633 に答える
1

検討の順序は次のとおりです。1。DP-
>よりクリーンなアプローチ
2.DPでない場合、CanCommandExecute->このメカニズムの唯一の目的は、コマンド処理の有効化/無効化サポートを提供することです
3. DPでない場合、CanCommandExecute、NormalプロパティVM(BooleanToVisibilityConverterを使用)。これはお勧めできません(特に複数のコントロールがある場合は、有効/無効にする必要があります)。

于 2012-06-20T06:23:04.313 に答える