如何在WPF DataTemplate上使用DataType属性?

所以显然我做错了,但是在使用DataType属性时,我似乎无法使HierarchicalDataTemplate(甚至只是DataTemplate)工作。 我已经创建了最短的WPF应用程序来演示这个问题。

XAML:

             

码:

 namespace WpfApplication1 { public class Foo { public string Name { get; set; } } public partial class Window1 : Window { public Window1() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { var list = new List { "a", 1, "b", 2, new Foo() { Name="Brian"}}; treeView1.DataContext = list; } } } 

显然我希望它在树视图中显示以下内容。

 I am a string 1 I am a string 2 I am a foo 

但我的应用程序实际显示以下内容。

 a 1 b 2 WpfApplication1.Foo 

奇怪的是,我在网上看到的几乎所有例子都做了这件事(略有不同)并且没有其他人似乎对它有任何问题。 然而,我已经尝试了无数种不同的重新排列XAML的方法,似乎没有任何帮助。 我希望另一双眼睛可以帮助。

您的代码很好,但您的DataType属性值需要用花括号括起来:

       

此外,如果您不使用HierarchicalDataTemplate的ItemsSource,您也可以使用DataTemplate。

您尚未指定TreeView的ItemTemplate属性。 此属性告诉TreeView要使用哪个DataTemplate,在您的情况下,您要指定资源中定义的那个:

  

但在您的情况下,您实际上可能希望使用应用于TreeView.ItemTemplateSelector属性的DataTemplateSelector实现,以根据要显示的类型选择不同的模板…