我一直在尝试将 System.Windows.Interactivity.Interaction 与 MS Expression Blend SDK for .NET 4 中的 WPF 一起使用。问题是我在那里找不到 Interaction.Triggers 附加属性。Interaction 类存在,但我只能看到其中的 4 个成员:Equals、GetBehaviors、GetTriggers、ReferenceEquals。我查看了我项目中对 System.Windows.Interactivity.dll 的引用的属性,发现路径是
“C:\Program Files (x86)\Microsoft SDKs\Expression\Blend.NETFramework\v4.0\Libraries\System.Windows.Interactivity.dll”
因此,我用 IL Disassеmbler 打开了该路径上的文件,发现 Interaction 类实际上具有 Triggers 附加属性,但该属性被声明为私有!然后我在 Prism SDK 的 \Lib\Desktop 目录中打开了相同的 dll 并在那里发现了相同的情况。这些 dll 的版本是 2.0.20525.0。还有一个带有 System.Windows.Interactivity dll 的 System.Windows.Interactivity.xml 文件。在其中,我发现了有关 TriggersProperty 的以下内容:
此属性不公开。这会强制客户端使用 GetTriggers 和 SetTriggers 方法来访问集合,确保集合存在并在使用之前设置。
但是我在那里没有找到任何 SetTriggers 方法。顺便说一句,Silverlight 的交互将 TriggersProperty 作为公共成员。
我已经看到了许多将 Interaction.Triggers 与 WPF 结合使用的示例,并且我认为应该没有任何问题。我究竟做错了什么?