【发布时间】:2013-02-20 19:54:30
【问题描述】:
对于我的树视图,我有两个不同的类提供 ItemsSource。
public class TreeViewModel : ViewModelBase
{
public ObservableCollection<NodeViewModel> Items { get; set; }
}
public class NodeViewModel : ViewModelBase
{
public string Id { get; set; }
public string Name { get; set; }
public ObservableCollection<NodeViewModel> Children { get; set; }
}
现在我希望我的 TreeView 显示 TreeViewModel 中的项目并显示 NodeViewModel 提供的分层数据。
这是我的 XAML
<Window x:Class="TreeViewMasterDetails.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TreeViewMasterDetails"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TreeView Height="Auto"
HorizontalAlignment="Stretch"
Margin="10"
VerticalAlignment="Stretch"
Width="Auto">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="x:Type local:TreeViewModel" ItemsSource="{Binding Items}">
<TextBlock Text="{Binding Path=Name}"></TextBlock>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="x:Type local:NodeViewModel" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"></TextBlock>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
</Grid>
</Window>
已尝试提供Items 作为TreeView 的ItemsSource。
如果显示任何内容,它不会分层显示数据。
我也尝试使用ItemTemplate 而不是TreeView.Resources。
这有什么问题?
也许是第一个TextBlock Text Binding有问题?
我想在Items那里显示NodeViewModel的Name属性。
【问题讨论】:
-
我认为这是 [WPF TreeView HierarchicalDataTemplate - 绑定到具有多个子集合的对象][1] 的副本。 [1]:stackoverflow.com/questions/1912481/…
-
是的,我已经看到了。但在这里不起作用。
-
请查看我更新的问题
-
TreeViewModel 没有 Name 属性,但这可能不是问题
-
在 Windows Phone 上这样做有什么运气吗?
标签: c# wpf treeview hierarchicaldatatemplate