0

「item」という名前のオブジェクトがあり、XAML からメソッドに渡されます。

これは私がブレークポイントで得たものです:

base {System.Reflection.TypeInfo} = Name = "Country" Full/Name = "Playground.Domain.Country"}

どの「タイプ」がアイテムであるかをどのように見つけることができるかを見つけようとしています

public class EditorTemplateSelector : DataTemplateSelector
    {
      public override DataTemplate SelectTemplate(object item,
                                                  DependencyObject container)
      {
        DataTemplate template = null;
        var templateName = "NotFoundEditor";
        if (item != null)
        {
          FrameworkElement element = container as FrameworkElement;
          if (element != null)
          {
            if (item is City)
              templateName = "CityEditor";
            else if (item is Country)
              templateName = "CountryEditor";

            template = element.FindResource(templateName) as DataTemplate;
          }
        }
        return template;
      }

しかし運がない。

object itemからデータを取得します

public Type ModelType
{
  get { return typeof(T); }
}

助言がありますか?

4

2 に答える 2

1

In the light of your last edit:

If "item" is a "System.Type" and not an instance of it, then use:

   if(item == typeof(City))
于 2013-10-29T12:37:23.433 に答える
1

AppDomain.CurrentDomain.GetAssemblies() に「Playground」アセンブリの複数のインスタンスがあるかどうかを確認していただけますか?

これは、プロジェクト参照ではなく、dll 参照 (「参照の追加」ダイアログで「参照」を選択) を介して別のプロジェクトからこのアセンブリを参照している場合に発生する可能性があります。

つまり、同じアセンブリの 2 つの異なるバージョンを参照しているときに、この種の奇妙なことが起こります。

[編集] それならxamlとは関係ない

于 2013-10-29T12:10:30.323 に答える