【发布时间】:2016-11-09 09:55:06
【问题描述】:
我正在尝试为组/用户层次结构设置 TreeView,其中组可以有用户和子组,子组也可以有子组和用户,依此类推。当我从集合中添加/删除用户或组并使用myTreeView.Items.Refresh(); 更新视图时,所有展开的 TreeViewItems 都会关闭。这对用户来说很不方便,所以我正在尝试扩展之前扩展的所有 TreeViewItem。 myTreeView.SelectedItem; 似乎不起作用,它只返回一个Group 或User 元素没有TreeViewItem 元素。
现在,我在WPF DataBound treeview expand / collapse 找到了一些我尝试过的东西,但是编译器现在告诉我这个
BindingExpression 路径错误:在“对象”“用户”上找不到“IsNodeExpanded”属性
用户无法扩展,因此在用户类中实现此字段没有意义。 我究竟做错了什么?这甚至是正确的方法吗?
我的 TreeView 有以下设置
<TreeView Grid.Column="0" Name="myTreeView" SelectedItemChanged="myTreeView_SelectedItemChanged" MouseDoubleClick="myTreeView_MouseDoubleClick">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type datatypes:Group}" ItemsSource="{Binding Items, UpdateSourceTrigger=PropertyChanged}">
<TextBlock Text="{Binding Name}" FontWeight="Bold"/>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type datatypes:User}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding LicenceUser}"/>
</StackPanel>
</DataTemplate>
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="{Binding IsNodeExpanded, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
</Style>
</TreeView.Resources>
</TreeView>
为了更好的可见性,我只在此处复制我的类的接口。
这里是我的 Group 类的接口
interface IGroup {
int ID { get; set; }
string Name { get; set; }
string Gruppe { get; set; }
string Path { get; set; }
Users Users { get; set; }
ObservableCollection<object> Items { get; }
bool IsNodeExpanded { get; set; }
Groups SubGroups { get; set; }
}
Group 类中的 Items Collection 如下所示
public ObservableCollection<object> Items {
get {
ObservableCollection<object> childItems = new ObservableCollection<object>();
foreach (Group item in SubGroups) {
childItems.Add(item);
}
foreach (User item in Users) {
childItems.Add(item);
}
return childItems;
}
}
以及我的用户类的接口
interface IUser {
string UserID { get; set; }
string LicenceUser { get; set; }
string MailAddress { get; set; }
string ComputerName { get; set; }
string HardDriveID { get; set; }
string Group { get; set; }
string Path { get; set; }
}
提前感谢您的帮助。
【问题讨论】: