我有附加属性InteractionService.Triggers,它是类型TriggersCollection,它派生自List<ITrigger>. 所以我在 XAML 中放入了一些触发对象,每个对象都实现了 interface ITrigger。它工作正常,并且构建时没有任何错误。但是,当我将此库从 Silverlight 5 移植到 Windows Phone 8 并尝试将其用于上述场景时,Visual Studio 2012 用蓝线在此 XAML 下划线,并告知存在此类错误。当我编译项目时,错误从 VS2012 中的 XAML 消失,直到下次编辑此 XAML 文件。我该如何解决这个问题?或者这是带有 WP8 SDK 的 VS2012 的错误?这种情况有什么解决方法吗?
XAML 的片段(由 VS2012+WP8SDK 下划线,但不是由 VS2010+SL5 下划线):
<deToolkit:InteractionService.Triggers>
   <deToolkit:EventTrigger EnterEvent="Loaded">
       <deToolkit:CommandSetter Command="{Binding LoadCommand}" />
   </deToolkit:EventTrigger>
</deToolkit:InteractionService.Triggers>
触发器集合:
public class TriggersCollection : List<ITrigger> { }
EventTrigger 类的头文件:
public class EventTrigger : TriggerBase
TriggerBase 类的头文件:
public class TriggerBase : DependencyObject, ITrigger
InteractionService 类的片段:
public sealed class InteractionService : DependencyObject
{
    #region [ADP] Triggers : TriggersCollection (Triggers applied to control)
    public static void SetTriggers(DependencyObject element, TriggersCollection value)
    {
        element.SetValue(TriggersProperty, value);
    }
    public static TriggersCollection GetTriggers(DependencyObject element)
    {
        var triggers = (TriggersCollection)element.GetValue(TriggersProperty);
        if (triggers == null)
        {
            var collection = new TriggersCollection();
            if (!DesignerProperties.IsInDesignTool)
            {
                // -- some code --
            }
            SetTriggers(element, collection);
            return collection;
        }
        return triggers;
    }
    public static readonly DependencyProperty TriggersProperty =
        DependencyProperty.RegisterAttached("Triggers", typeof(TriggersCollection), typeof(InteractionService), null);
    #endregion Triggers
}
错误:
无法将“EventTrigger”类型的值添加到“TriggersCollection”类型的集合或字典中。
有时会引发另一个错误:
值“EventTrigger”不是“ITrigger”类型,不能在此通用集合中使用。参数名称:值