Значение типа '' не может быть добавлено в коллекцию или словарь типа ''

99
10

Я приложил свойство InteractionService.Triggers, которое имеет тип TriggersCollection, которое происходит от List<ITrigger>. Поэтому я поместил в XAML несколько триггерных объектов, и каждый из них реализует интерфейс ITrigger. Он работает нормально и был собран без каких-либо ошибок. Но когда я перенес эту библиотеку из Silverlight 5 в Windows Phone 8 и попытался использовать ее с описанным выше сценарием, Visual Studio 2012 подчеркнул этот XAML синей линией и сообщил, что существует такая ошибка. Когда я компилирую проект, ошибка исчезает из XAML в VS2012 до следующих изменений в этом файле XAML. Как я могу решить эту проблему? Или это ошибка VS2012 с WP8 SDK? Есть ли обходной путь для этого случая?

Фрагмент XAML (подчеркнуто VS2012 + WP8SDK, но не VS2010 + SL5):

<deToolkit:InteractionService.Triggers>
<deToolkit:EventTrigger EnterEvent="Loaded">
<deToolkit:CommandSetter Command="{Binding LoadCommand}" />
</deToolkit:EventTrigger>
</deToolkit:InteractionService.Triggers>

TriggersCollection:

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" и не может использоваться в этой универсальной коллекции. Имя параметра: значение

спросил(а) 2013-02-17T14:24:00+04:00 7 лет, 8 месяцев назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема