16

convertersいつ使うのか、いつ使うのか、どうやって決めるのかしらtriggers。GUIでの操作(コントロールの表示/非表示、外観の変更など)にトリガーを使用することを好みます。

以前BooleanToVisibilityConverterはこの目的でを使用していましたが、今では必要ありませんvisibility。トリガーの使用に関連するすべてのことを行い、「MSチームによる作成の目的は何でしたか」とさえ考え始めました。 BooleanToVisibilityConverter一般に、可能な場合は、宣言型の方法を使用してコード(この例ではXAML)を記述しようとします。

それについてどう思いますか?

4

5 に答える 5

23

私はあなたに同意します.XAMLで宣言型コードを使用しようとしていTriggersますConverters.

ほとんどのシナリオでは、トリガーは任意のコンバーターと同じ作業を実行できますが、Converterspchajer が述べたようにカスタム/ビジネス ロジックを持つことができます。

の 1 つの制限Triggersは、セッターはDataTriggersUI 要素のプロパティのみを変更できることです。そのため、ViewModels プロパティを triggers で更新することはできません。それが勝つ場所です。メソッドConvertersを覚えておいてください。ConvertBack

したがって、VM プロパティをコントロールにバインドできます。コントロールが他の方法で変更された場合でもVisibility、VM プロパティは更新されBooleanToVisibilityConvertervisibilityます。通常は必須ではないため、BooleanToVisibilityConverterトリガーに置き換えられます。

要するに -

TriggersOneWay操作のみを実行できますが、操作Convertersを実行できますTwoWay

于 2012-06-22T12:30:01.803 に答える
2

私の意見では、あなたはボトムアップから見ており、トップダウンで見る必要があるだけです.

トリガー- 指定された条件が満たされると、実行が「トリガー」されます

コンバーター- 互換性のない 2 つの型の間で変換します。

整数で同じ機能を実行できるのに、なぜ boolean データ型が必要なのですか?

于 2012-06-22T14:41:13.787 に答える
1

上で述べたことに加えて、私は追加することしかできません:

  • トリガーは、物事を複製する必要がある場合があります。たとえば、トリガーに複数のプロパティがある場合は、すべての組み合わせをそれぞれ指定する必要があります。
  • タイプAからタイプBに適切に変換するためのコードが必要になる場合があります。その後、コンバーターを使用する必要があります。トリガーは、値/プロパティがVMから既に公開されている場合に適しているため、トリガーに使用できます。
于 2012-06-22T12:37:56.190 に答える
1

トリガーまたはコンバーターのいずれかで機能を実現できますが、以下のオプションから、決定を下す際に可能性を考慮することができます

  1. 開発にTDDアプローチを使用している場合は、テストケースを作成できるコンバーターを使用してください。
  2. コンバーターのコードを正しくする方が良いビジネスロジックがあれば、トリガーでは実現できない場合があります。
于 2012-06-22T08:17:21.077 に答える
0

ビジネス関連の操作は常に DomainModel オブジェクト、または少なくとも ViewModel オブジェクトで行う必要があります。コンバーターは値をある型から別の型に変換するように設計されているため、コンバーターでビジネスを機能させることは適切なオプションではありません。

于 2013-03-22T14:28:40.997 に答える