TreeView 项目中的字符串数组
String array in TreeView item
我有一个 TreeView 绑定到 ObservableCollection
个项目,定义如下(为完整性提供了完整示例视图模型):
using System.Collections.ObjectModel;
namespace ViewModels
{
public class MainViewModel()
{
public ObservableCollection<CustomTask> SavedTasks { get; } = new ObservableCollection<CustomTask>();
public MainViewModel() {}
}
public class CustomTask
{
public string DisplayName { get; private set; }
public string Name { get; private set; }
public string[] Tasks { get; private set; }
public CustomTask(string dispName, string name, string[] tasks)
{
DisplayName = dispName;
Name = name;
Tasks = tasks;
}
}
}
我试图在树视图中显示每个 CustomTask
对象,其 Tasks
属性 是树视图中的子项。我已经阅读了一些在线教程等,但无法显示字符串。这是我目前的XAML:
<TreeView ItemsSource="{Binding SavedTasks}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type common:CustomTask}" ItemsSource="{Binding SavedTasks}">
<TextBlock Text="{Binding Path=Name}" />
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type sys:String}" ItemsSource="{Binding Tasks}">
<TextBlock Text="{Binding}" />
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
我不确定如何处理第二个 DataTemplate。我希望避免创建另一个 class 来保存数组中的每个字符串。
这就是您要查找的内容:
<TreeView ItemsSource="{Binding SavedTasks}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:CustomTask}" ItemsSource="{Binding Tasks}">
<TextBlock Text="{Binding Path=Name}" />
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate DataType="{x:Type sys:String}">
<TextBlock Text="{Binding}" />
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
我们添加 HierarchicalDataTemplate
和 ItemsSource
绑定到每个节点的 Tasks
属性。
我们定义每个根节点应该使用一个TextBlock
显示每个项目的Name
属性.
然后我们定义 children 与 DataTemplate
的外观。我们不需要另一个 HierarchicalDataTemplate
,因为我们只有两个级别。
我有一个 TreeView 绑定到 ObservableCollection
个项目,定义如下(为完整性提供了完整示例视图模型):
using System.Collections.ObjectModel;
namespace ViewModels
{
public class MainViewModel()
{
public ObservableCollection<CustomTask> SavedTasks { get; } = new ObservableCollection<CustomTask>();
public MainViewModel() {}
}
public class CustomTask
{
public string DisplayName { get; private set; }
public string Name { get; private set; }
public string[] Tasks { get; private set; }
public CustomTask(string dispName, string name, string[] tasks)
{
DisplayName = dispName;
Name = name;
Tasks = tasks;
}
}
}
我试图在树视图中显示每个 CustomTask
对象,其 Tasks
属性 是树视图中的子项。我已经阅读了一些在线教程等,但无法显示字符串。这是我目前的XAML:
<TreeView ItemsSource="{Binding SavedTasks}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type common:CustomTask}" ItemsSource="{Binding SavedTasks}">
<TextBlock Text="{Binding Path=Name}" />
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type sys:String}" ItemsSource="{Binding Tasks}">
<TextBlock Text="{Binding}" />
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
我不确定如何处理第二个 DataTemplate。我希望避免创建另一个 class 来保存数组中的每个字符串。
这就是您要查找的内容:
<TreeView ItemsSource="{Binding SavedTasks}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:CustomTask}" ItemsSource="{Binding Tasks}">
<TextBlock Text="{Binding Path=Name}" />
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate DataType="{x:Type sys:String}">
<TextBlock Text="{Binding}" />
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
我们添加 HierarchicalDataTemplate
和 ItemsSource
绑定到每个节点的 Tasks
属性。
我们定义每个根节点应该使用一个TextBlock
显示每个项目的Name
属性.
然后我们定义 children 与 DataTemplate
的外观。我们不需要另一个 HierarchicalDataTemplate
,因为我们只有两个级别。