2011-11-08 40 views
0

複数のアイテムに同じデータトリガを適用する必要があります。データトリガは、問題は私が/ショーを折りたたむたいこと、ボタンなどのボックスをチェックし、すべてのラベル、テキストフィールドのためにそれをコピーする必要があることである複数の異なるアイテムに同じデータトリガを適用するにはどうすればよいですか?

<Style> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding ElementName=someButton, Path=IsChecked}" Value="False"> 
      <Setter Property="UIElement.Visibility" Value="Collapsed" /> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

であり、これは一つのボタンで、エンドレイアウトがあります

また、トリガーはボタンなどのアイテムで完全に動作していますが、どのパネル、ドッキングパネル、または他のパネルでも機能していません。これは非常に複雑でボタンが多いため、グリッド、キャンバスなど任意のアイデア?

.NET 4.0を使用すると、Visual Studio 2010が表現します。

答えて

2

最初の質問は、なぜこれが最初にDataTriggerなのかと思います。 BooleanToVisibilityConverterを使用すると、VisibilityIsCheckedプロパティに直接バインドできます。

それ以外では、AreControlsVisibleのように、IsCheckedをビューモデルのプロパティとの双方向バインディングにすることで、大幅にクリーンアップすることができます。他のすべてのコントロールは単純に持つことができますVisibility="{Binding AreControlsVisible…

もう一つの選択肢は、そのスタイルをリソースにして、それをすべての適切な要素に適用することです。

+0

あなたはそれを行う方法について小さなスニペットを提供できますか?どうも! – Nayan

+0

もう1つの選択肢は、すべてのコントロールに個別に表示するのではなく、すべてのコントロールの親に一度だけ表示ビンディングを適用することです。 –

+0

ありがとう、素晴らしいスーパー素晴らしい!次に例を示します。http://www.rhyous.com/2011/02/22/binding-visibility-to-a-bool-value-in-wpf/ – SpeedBirdNine

関連する問題