所以顯然我做錯了什麼,但我似乎無法使用DataType屬性時使HierarchicalDataTemplate(甚至只是DataTemplate)工作。我創建了最短的WPF應用程序來演示問題。如何在WPF DataTemplate上使用DataType屬性?
XAML:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:System="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:WpfApplication1"
Title="Window1" Height="300" Width="300" Loaded="Window_Loaded">
<Window.Resources>
<HierarchicalDataTemplate DataType="x:Type local:Foo">
<TextBlock Text="I am a Foo" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="x:Type System:String">
<TextBlock Text="I am a String" />
</HierarchicalDataTemplate>
</Window.Resources>
<Grid>
<TreeView Name="treeView1" ItemsSource="{Binding}" />
</Grid>
</Window>
CODE:
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<object> { "a", 1, "b", 2, new Foo() { Name="Brian"}};
treeView1.DataContext = list;
}
}
}
很顯然,我希望它顯示在TreeView以下。
I am a string
1
I am a string
2
I am a foo
但我的應用程序實際上顯示以下內容。
a
1
b
2
WpfApplication1.Foo
奇怪的是,我在網絡上看到幾乎每一個例子做這事(有輕微的變化),並沒有其他人似乎與它有一個問題。然而,我嘗試過無數種不同的重新佈置XAML的方式,似乎沒有任何幫助。我希望另一雙眼睛可以幫助。
哈哈......那太尷尬了。有100%沒有辦法,我告訴你們任何一個人,我花了多少時間在這方面工作:) – 2009-09-15 01:04:32
我認爲你也可以用DataType =「local:Foo」(沒有x:Type或花括號) ,所以不要尷尬。這是一個容易犯的錯誤! – 2009-09-15 01:26:40
@Brian,歡迎來到WPF學習曲線。你會遇到很多這些,不要讓他們讓你失望。 – user7116 2009-09-15 02:19:30