And*_*rIV 5 c# xaml visual-studio-2012 windows-phone-8
我有附属属性InteractionService.Triggers,属于类型TriggersCollection,源于List<ITrigger>.所以我在XAML中添加了一些触发器对象,并且每个触发器对象都实现了接口ITrigger.它工作正常,并且没有任何错误地构建.但是当我将这个库从Silverlight 5移植到Windows Phone 8并尝试将其与上述场景一起使用时,Visual Studio 2012用蓝线强调了这个XAML并告诉它存在这样的错误.当我编译项目时,错误从VS2012中的XAML消失,直到在此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>
Run Code Online (Sandbox Code Playgroud)
TriggersCollection:
public class TriggersCollection : List<ITrigger> { }
Run Code Online (Sandbox Code Playgroud)
EventTrigger类的标题:
public class EventTrigger : TriggerBase
Run Code Online (Sandbox Code Playgroud)
TriggerBase类的标题:
public class TriggerBase : DependencyObject, ITrigger
Run Code Online (Sandbox Code Playgroud)
类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
}
Run Code Online (Sandbox Code Playgroud)
错误:
"EventTrigger"类型的值无法添加到"TriggersCollection"类型的集合或字典中.
另一个有时会抛出的错误:
值"EventTrigger"不是"ITrigger"类型,不能在此通用集合中使用.参数名称:value
| 归档时间: |
|
| 查看次数: |
1848 次 |
| 最近记录: |