gpt4 book ai didi

c# - 将 Dictionary> 绑定(bind)到多个 TreeViewItem

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

所以我有一些数据想存储在 TreeView 中,我让它与 2 个分支一起工作,但我一直在获取更多数据。我认为字典最适合这个,因为当我添加“健全性检查”时,将 ID 存储在 key 中最容易

我希望如何呈现我的数据:

--Internet Checks
----- 'Date, message, status'
--------- 'Details'
--Server Checks
----- 'Date, message, status'
--------- 'Details'
--Sanity Checks
----- 'Date, message, status'
--------- 'Details'
--------- 'Error1'
--------- 'Error2'
--------- 'Error3'
--------- 'etc'
--etc

这是现在的样子

--Internet Checks
----- 'Date, message, status'
--Server Checks
----- 'Date, message, status'
--Sanity Checks
----- 'Date, message, status'
--etc

现在我的 xaml 是这样的:

<TreeView Name="treeView1" ItemsSource="{Binding Items}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Value.SubItems}">
<TextBlock Text="{Binding Value.Text}" />
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Value.Text}"/>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>

这是我的 MenuItem 类:

public class MenuItem
{
public MenuItem()
{
this.SubItems = new Dictionary<int, MenuItem>();
}

public Dictionary<int, MenuItem> SubItems { get; set; }

public string Text { get; set; }
}

这是我目前填写字典的方式:

public Dictionary<int, MenuItem> Fill(string name, Dictionary<int, MenuItem> root, List<HealthCheckHourModel> list)
{
root.Add(nextNum, new MenuItem { Text = name + " Checks"});
foreach (HealthCheckHourModel hchm in list)
{
if (hchm.Message.Contains(name))
{
root[nextNum].SubItems.Add(hchm.ID, new MenuItem { Text = hchm.StartTime + " " + hchm.Message });
root[nextNum].SubItems[hchm.ID].SubItems.Add(-111, new MenuItem { Text = hchm.Details });
}
}
nextNum--;
return root;
}

最佳答案

有两种可能:

  • 删除 HierarchicalDataTemplate 的 ItemTemplate。

    <TreeView Name="treeView1" ItemsSource="{Binding Items}">
    <TreeView.ItemTemplate>
    <HierarchicalDataTemplate ItemsSource="{Binding Path=Value.SubItems}">
    <TextBlock Text="{Binding Value.Text}" />
    <!--<HierarchicalDataTemplate.ItemTemplate>
    <DataTemplate>
    <TextBlock Text="{Binding Path=Value.Text}"/>
    </DataTemplate>
    </HierarchicalDataTemplate.ItemTemplate>-->
    </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
    </TreeView>
  • 将 ItemTemplate 保留为 HierarchicalDataTemplate,但将 DataTemplate 替换为 HierarchicalDataTemplate

    <TreeView Name="treeView1" ItemsSource="{Binding Items}">
    <TreeView.ItemTemplate>
    <HierarchicalDataTemplate ItemsSource="{Binding Path=Value.SubItems}">
    <TextBlock Text="{Binding Value.Text}" />
    <HierarchicalDataTemplate.ItemTemplate>
    <HierarchicalDataTemplate ItemsSource="{Binding Path=Value.SubItems}">
    <TextBlock Text="{Binding Value.Text}" />
    </HierarchicalDataTemplate>
    </HierarchicalDataTemplate.ItemTemplate>
    </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
    </TreeView>

关于c# - 将 Dictionary<string,List<Class>> 绑定(bind)到多个 TreeViewItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45820806/

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