Caliburn.Micro TreeView 添加一个静态元素
Caliburn.Micro TreeView add a static element
我有一个可用的 TreeView
<TreeView x:Name="TVAccess" ItemsSource="{Binding AccessLevel}" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.ColumnSpan="3">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate >
<StackPanel Orientation="Horizontal">
<!--<CheckBox Checked="{Binding Checked}"/>-->
<TextBlock Text="{Binding Text}" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
它绑定到这样定义的 AccessLevel 对象
public BindableCollection<UserLibrary.DataAccess.TextHelper.TreeViewItem> AccessLevel { get; set; }
这很好用
结果是这样
我想添加一个名为 "Access Right" 的固定第一级,我该怎么做?
编辑 1
我想要的结构是这样的:
感谢您的帮助。
编辑 2 - TreeViewItem class
public class TreeViewItem
{
public string Text { get; set; }
public bool Checked { get; set; }
}
编辑 3 - 修改 TreeViewItem Class
所以如果我像这样修改我的调用,现在的问题是将它绑定到 TreeView
public class TreeViewItem
{
public string Text { get; set; }
public bool Checked { get; set; }
public IEnumerable<TreeViewItem> SubTreeViewItem { get; set; }
}
将 TreeViewItem
插入索引 0
处的源集合。
AccessLevel.Insert(0, new UserLibrary.DataAccess.TextHelper.TreeViewItem() { Text = "Access Right" } );
或将 ItemsSource
属性 设置为 CompositeCollection
并在 XAML 标记中定义固定项:
<TreeView x:Name="TVAccess" Grid.Row="1" Grid.Column="0"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.ColumnSpan="3">
<TreeView.Resources>
<CollectionViewSource x:Key="source" Source="{Binding AccessLevel}" />
</TreeView.Resources>
<TreeView.ItemsSource>
<CompositeCollection>
<local:TreeViewItem Text="Access Right" />
<CollectionContainer Collection="{Binding Source={StaticResource source}}" />
</CompositeCollection>
</TreeView.ItemsSource>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate >
<StackPanel Orientation="Horizontal">
<!--<CheckBox Checked="{Binding Checked}"/>-->
<TextBlock Text="{Binding Text}" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
我有一个可用的 TreeView
<TreeView x:Name="TVAccess" ItemsSource="{Binding AccessLevel}" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.ColumnSpan="3">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate >
<StackPanel Orientation="Horizontal">
<!--<CheckBox Checked="{Binding Checked}"/>-->
<TextBlock Text="{Binding Text}" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
它绑定到这样定义的 AccessLevel 对象
public BindableCollection<UserLibrary.DataAccess.TextHelper.TreeViewItem> AccessLevel { get; set; }
这很好用 结果是这样
我想添加一个名为 "Access Right" 的固定第一级,我该怎么做?
编辑 1
我想要的结构是这样的:
感谢您的帮助。
编辑 2 - TreeViewItem class
public class TreeViewItem
{
public string Text { get; set; }
public bool Checked { get; set; }
}
编辑 3 - 修改 TreeViewItem Class
所以如果我像这样修改我的调用,现在的问题是将它绑定到 TreeView
public class TreeViewItem
{
public string Text { get; set; }
public bool Checked { get; set; }
public IEnumerable<TreeViewItem> SubTreeViewItem { get; set; }
}
将 TreeViewItem
插入索引 0
处的源集合。
AccessLevel.Insert(0, new UserLibrary.DataAccess.TextHelper.TreeViewItem() { Text = "Access Right" } );
或将 ItemsSource
属性 设置为 CompositeCollection
并在 XAML 标记中定义固定项:
<TreeView x:Name="TVAccess" Grid.Row="1" Grid.Column="0"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.ColumnSpan="3">
<TreeView.Resources>
<CollectionViewSource x:Key="source" Source="{Binding AccessLevel}" />
</TreeView.Resources>
<TreeView.ItemsSource>
<CompositeCollection>
<local:TreeViewItem Text="Access Right" />
<CollectionContainer Collection="{Binding Source={StaticResource source}}" />
</CompositeCollection>
</TreeView.ItemsSource>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate >
<StackPanel Orientation="Horizontal">
<!--<CheckBox Checked="{Binding Checked}"/>-->
<TextBlock Text="{Binding Text}" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>