DataTemplateSelector geting typeof传递的对象

时间:2013-10-29 11:58:49

标签: c# wpf typeof datatemplateselector

我有一个名为“item”的对象女巫从XAML传递给方法

这就是我对breakpint的看法:

  

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); }
}

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您是否可以尝试在AppDomain.CurrentDomain.GetAssemblies()中查看是否有多个“Playground”程序集实例?

如果您通过dll引用(通过“添加引用”对话框中的“浏览”选择)从另一个项目引用此程序集,而不是项目引用,则可能会发生这种情况。

换句话说:当您引用同一个程序集的两个不同版本时,会发生这种奇怪的事情。

[edit]如果是这样的话,它与xaml

无关

答案 1 :(得分:1)

根据您的上一次编辑:

如果“item”是“System.Type”而不是它的实例,则使用:

   if(item == typeof(City))