6

Blendの動作、アクション、トリガーの小さなコレクションに非常に満足しています。これらは使いやすく、強力です。しかし、要素ごとにそれらを適用することを避ける方法をまだ理解できません。たとえば、私がそのような行動をしている場合:

<Rectangle>
    <i:Interaction.Behaviors>
        <il:MouseDragElementBehavior/>
    </i:Interaction.Behaviors>
</Rectangle>

ウィンドウにドラッグ可能な長方形がいくつかあります。ドラッグ可能にするには、それぞれに上記のマークアップが必要です。私がやりたいのは、次のようなものを書けるようにすることです。

<Style x:Key="RectangleStyle" TargetType="{x:Type Rectangle}">
    <Setter Property="i:Interaction.Behaviors" 
        Value="il:MouseDragElementBehavior"/>
</Style>

これは、スタイル、テンプレート、または動作やアクションのマークアップの繰り返しを回避するための他の方法である可能性があります。私がこれまでに思いついた最善の解決策は、コンテナの特別な動作を作成することです(アタッチされると、子イベントにアタッチする子を列挙します)。何か案は?

4

3 に答える 3

3

同じ問題が発生し、BlendSDKのこの欠点を回避するために添付プロパティを作成する方法についてブログに投稿しました。

于 2010-07-28T02:46:41.637 に答える
1

試したことはありませんが、Behaviorsのコレクションを保持できる添付プロパティを作成することをお勧めします。そのプロパティのプロパティ変更ハンドラーで、コレクションを列挙し、実際のInteration.Behaviorsプロパティに各動作を追加します。少し面倒ですが、うまくいくはずです。

アップデート

このアプローチは、かなりの作業がなければ機能しません。問題は、ビヘイビアーとトリガーを一度に1つのオブジェクトにしかアタッチできないことです。そもそもスタイルを使って適用することには限界があるのはこのためでしょう。これを機能させるには、ある種のトリガーまたはビヘイビアファクトリを作成する必要があります。

于 2009-10-26T18:00:03.430 に答える
0

そこから動作を継承しRectangleて適用する独自のクラスを作成できます。

于 2009-08-10T17:31:37.430 に答える