gpt4 book ai didi

c# - 将分层 TreeView 绑定(bind)到字典

转载 作者:太空宇宙 更新时间:2023-11-03 15:52:03 27 4
gpt4 key购买 nike

我正在尝试让我的 TreeView 绑定(bind)到将要更新的字典。我已经在数据类型本身上实现了 INotifyProperyChangedHandler,但这会影响 TreeView 吗?

我的目标是:

-FolderName
--->Item1
--->Item2
-FolderName
--->Item1

这是我的观点:

<UserControl.Resources>
<HierarchicalDataTemplate x:Key="ChildTemplate" >
<TextBlock FontStyle="Italic" Text="{Binding Path=m_Items}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="NameTemplate"
ItemsSource="{Binding Path=Value}"
ItemTemplate="{StaticResource ChildTemplate}">
<TextBlock Foreground="White" Text="{Binding m_Name}" FontWeight="Bold" />
</HierarchicalDataTemplate>
</UserControl.Resources>

<TreeView x:Name="NewTree" ItemsSource="{Binding m_FolderList, UpdateSourceTrigger=PropertyChanged}" ItemTemplate="{StaticResource NameTemplate}">
</TreeView>

我的 View 模型:

    public Dictionary<UInt16, Folder> m_FolderList
{
get { return Manager.Instance.GetFolderDirectory(); }
}

我的文件夹类:

public class Folder
{
public m_Name { get; set; }
public ObservableCollection<String> m_Items { get; set; }
}

我得到的是一个永远不会更新的空白 TreeView 。每当我向该单例管理器实例中的“FolderDirectory”添加新项目时,我都会调用 OnPropertyChanged。这适用于我绑定(bind)到该字典或文件夹项目的任何其他内容。

我试图遵循这一点,但绑定(bind)如何观察到它自动生成“FamilyMembers”列表的 child 让我无法理解,因为您没有在任何地方明确告诉 XAML 模板它应该将 itemsource 绑定(bind)到该集合。 http://www.wpf-tutorial.com/treeview-control/treeview-data-binding-multiple-templates/

编辑:控件肯定是从我的单例中获取所有值。我只是在玩弄绑定(bind)路径的命名,当我不小心将 TreeView 设置为绑定(bind)到 m_FolderList.Value(字典有值,而不仅仅是值)时,它在控制台中给我的绑定(bind)错误与在中的项目一样多字典。

编辑2:

public List<Folder> m_FolderList
{
get
{
List<Folder> list = new List<Folder>();
list.AddRange(Manager.Instace.GetFolderDirectory().Values);
return list;
}
}

如果我这样做,第一层的信息就会出现而不是词典......这很麻烦

最佳答案

试试这个

    <Window.Resources>

<DataTemplate x:Key="secondLevel">
<TextBlock Text="{Binding}"/>
</DataTemplate>

<HierarchicalDataTemplate x:Key="topLevel" ItemsSource="{Binding Value.m_Items}" ItemTemplate="{StaticResource secondLevel}">
<TextBlock Text="{Binding Value.m_Name}">
</TextBlock>
</HierarchicalDataTemplate>

</Window.Resources>
<StackPanel>
<TreeView x:Name="FolderTree" ItemsSource="{Binding m_FolderList}" ItemTemplate="{StaticResource topLevel}">
</TreeView>
</StackPanel>

output enter image description here

关于c# - 将分层 TreeView 绑定(bind)到字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25390012/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com