IBehaviorを実装するときはActionsプロパティに気を付ける

3時間ぐらい悩みました。

IBehaviorを実装するときにActionCollectionを返すActionsプロパティを公開するのですがこんな感じで

デフォルトの値をnew ActionCollectionにしてると

ActionCollectionにいれた例えばInvokeCommandActionなどにDataContextが伝播されず、Commandがnullになってしまいます。

めちゃくちゃ悩んでたんですけど、なにやら公式のBehavior SDKはオープンソースだったらしく、公式のソースを見ました。

どうやらActionsプロパティのデフォルトはnull

Actionsプロパティをgetterのみとし、getterでインスタンスを作成しているようです。

これでDataContextも伝播されます。

ちなみにActionsのアクション実行方法はInteractivityクラスをつかいます。