5

から派生したInteractionService.Triggersタイプのプロパティを添付しました。そこで、いくつかのトリガー オブジェクトを XAML に入れ、それぞれに interface を実装します。正常に動作し、エラーなしでビルドされました。しかし、このライブラリを Silverlight 5 から Windows Phone 8 に移植し、上記のシナリオで使用しようとすると、Visual Studio 2012 はこの XAML に青い線で下線を付け、そのようなエラーがあることを通知します。プロジェクトをコンパイルすると、この XAML ファイルを次に編集するまで、VS2012 の XAML からエラーが消えます。この問題を解決するにはどうすればよいですか? または、これは WP8 SDK を使用した VS2012 のバグですか? この場合の回避策はありますか?TriggersCollectionList<ITrigger>ITrigger

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" 型ではないため、この汎用コレクションでは使用できません。パラメータ名: 値

4

0 に答える 0