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

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

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

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

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

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

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

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

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

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

garicchi
対話システムとSFとアニメが好き たまにMicrosoftコミュニティに出現します たまに日経Linuxとラズパイマガジンで記事を書いたり Microsoft MVP 2014~2018(引退済み)

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください