我目前正在使用WPF编写文件夹浏览器对话框。为了显示树形结构,我使用了TreeView:
<TreeView Name="FolderView" ItemsSource="{Binding DataTrees}" Grid.Row="0">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Tree}">
<TreeViewItem IsSelected="{Binding IsSelected, Mode=TwoWay}" IsExpanded="{Binding IsExpanded, Mode=TwoWay}" Header="{Binding Name}" HorizontalAlignment="Left"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
目前我有三个问题:
- 无法在正在运行的程序中选择项目
- 标题向右移了约两个选项卡(不是关键问题,但很丑陋)
- 'IsExpanded'仅在双击项目时设置,并且不会在单击[+]时设置
我不知道问题出在哪里,请评论并我会更新我的问题!
编辑: Itemsource是一个列表 数据树类:
public class DataTree:INotifyPropertyChanged
{
private string path;
private string name;
private ObservableCollection<DataTree> tree;
private bool isSelected;
private bool isExpanded;
}
(不使用属性和实现INotifyPropertyChanged的简单代码)
ItemTemplate
而不了解内部结构会导致许多问题。您应该使用Expression Blend查看TreeViewItem的内部结构。 - King King