「[Silverlight] ビヘイビアーの開発 その3」 の続きです。
■ TargetedTriggerAction<T> の補足
「[Silverlight] ビヘイビアーの開発 その2」 で書いた TargetedTriggerAction<T> の補足です。
Target プロパティの型が T になっていると書きましたが、(それはそうなんですが)、TargetedTriggerAction<T> では AssociatedObject プロパティの型が DependencyObject となっています。
Behavior<T>、TriggerAction<T> では、たとえば、T を Button にすれば Blend 上でボタンとその子孫のオブジェクトにしかドロップできなくなります。しかし、TargetedTriggerAction<T> では T は AssociatedObject の型ではなく Target の型の指定になっているためこういったことができません。そこで TypeConstraint 属性が用意されています。
[TypeConstraint(typeof(Button))] public class TargetedTriggerActionSampleBehavior : TargetedTriggerAction<FrameworkElement> { protected override void Invoke(object parameter) { } }
このようにクラスに対して TypeConstaint 属性を指定してやれば OK です。
■ 最後に
以上、ビヘイビアー開発関連でとりあえず知ってることをまとめてみました。
もともとは その3、その4 あたりで書いた属性のことがきちんとまとまってる資料がなかなか見つからなくて探し出すのに苦労したので忘れないようにと書いておいたのがベースになってます。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。