私は、MS Expression Blend SDK for .NET 4のWPFでSystem.Windows.Interactivity.Interactionを使用しようとしています。問題は、そこにInteraction.Triggersという添付プロパティが見つかりません。 Interactionクラスは存在しますが、Equals、GetBehaviors、GetTriggers、ReferenceEqualsという4つのメンバーしか見ることができません。 私は私のプロジェクトでSystem.Windows.Interactivity.dllへの参照のプロパティを見て、パスがWPFでInteraction.Triggersを使用
「Cであることがわかった:\プログラムファイル(x86の)\マイクロソフト のSDK \表現\ブレンド。 NETFramework \ V4.0 \ライブラリ\ System.Windows.Interactivity.dll」
だから、私はILDisassеmblerとそのパス上のファイルを開いたとインタラクションクラスは、実際にプロパティ添付のトリガーが、プロパティを持っていることがわかりましたプライベートとして宣言されています!それから、Prism SDKの\ Lib \ Desktopディレクトリに同じdllを開き、そこに同じ状況が見つかった。これらのdllのバージョンは2.0.20525.0です。また、System.Windows.Interactivity dllを持つSystem.Windows.Interactivity.xmlファイルもあります。その中で私はTriggersPropertyについて次のように見つけました:
このプロパティは公に公開されていませんこれにより、クライアントはGetTriggersおよびSetTriggersメソッドを使用して コレクションにアクセスし、コレクションが存在することを保証し、使用前に設定されます。
しかし、そこにはどのSetTriggersメソッドも見つかりませんでした。ところで、Silverlightのインタラクションは、パブリックメンバーとしてTriggersPropertyを持っています。
私はWPFでInteraction.Triggersを使用している多くの例を見てきましたが、問題はないはずです。私は間違って何をしていますか?
第1弾または第2弾にタイプミスがあると思います。 ILDASMではオブジェクトブラウザーやプライベートでは公開できませんが、2つの異なるライブラリーです。 – XanderMK
タイプミスはありません。これは、オブジェクトブラウザとILDASMの表示方法が異なります。これらのファイルは、2つのツールにロードされているファイルと同じです。あなたが私を信じないならば、自分で試してみてください。 –
はい、これは動作します。私は初めて何かミスタイプする必要があります。 Interaction.GetTriggersは、まずInteraction.Triggersプロパティが設定されているかどうかをチェックし、それ以外の場合は設定します。また、Interaction.GetTriggersは、WPFでInteraction.Triggersを取得する唯一の正当な方法です。ところで、何らかの理由で、Interaction.Triggersプロパティの名前が "ShadowTriggers"です。 WPFでは、Silverlightについてはわかりません。 – XanderMK