WPF的TreeView通过数据库动态添加修改删除节点功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF的TreeView通过数据库动态添加修改删除节点功能相关的知识,希望对你有一定的参考价值。

如何建表?表里需要什么样的字段?我只需要一个类别的节点字段就可以,比如说现在xaml窗体页面上有一个主的<TreeViewItem Header="所有类别"></TreeViewItem>,如何通过点击一个文本框和一个按钮,当点击这个所有类别时,在其下动态可以添加修改删除子节点呢?DAL数据层是不是象DataGrid一样把数据放入到DataTable里就可以了?具体的思路及示例代码还请高手赐教,在这里感谢了

参考技术A 表中创建三个字段就可以了(ID,Name,ParentID),然后定义一个对应节点的类,比如:
public class TypeNode

public string IDget;set;
public string Nameget;set;
public TypeNode Parentget;set;
public ObservableCollection<TypeNode> Childrenget;set;
public bool IsSelectedget;set;

添加构造节点的方法,根据ID来确定上下级和加载子节点,代码就不列举了;然后实现一下INotifyPropertyChanged接口就差不多了。接着定义几个样式:
<Style x:Key="TypeTreeStyle" TargetType="TreeView">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TreeView">
<ScrollViewer Padding="4" Focusable="False" CanContentScroll="False">
<ItemsPresenter/>
</ScrollViewer>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="TypeNode" TargetType="TreeViewItem">
<Setter Property="IsSelected" Value="Binding IsSelected, Mode=TwoWay"/>
<Setter Property="FontWeight" Value="Normal"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold"/>
</Trigger>
</Style.Triggers>
</Style>
<HierarchicalDataTemplate x:Key="TypeTreeGroup" ItemsSource="Binding Children">
<TextBlock Text="Binding TypeName" FontSize="13"/>
</HierarchicalDataTemplate>
在ViewModel或是后台代码中定义一个ObservableCollection<TypeNode>集合,名为TypeTree,在xaml中添加TreeView并绑定:
<TreeView ItemsSource="Binding TypeTree"
Style="StaticResource TypeTreeStyle"
ItemContainerStyle="StaticResource TypeNode"
ItemTemplate="StaticResource TypeTreeGroup"/>
根据节点的IsSelected属性来确定在哪个位置创建子节点,同时就得到了数据的ParentID,再加上创建时指定的ID和Name存入数据库就完工了。希望对你有帮助,还有疑问请追问或是Hi本回答被提问者采纳

C# wpf listview 如何动态添加 高手回答下

参考技术A 不知道是要把ListView动态添加到一个面板中还是添加动态添加ListView的项
XAML代码:
<Grid Name="grdRoot">
</Grid>

C#代码:

System.Windows.Controls.ListView lsv = null;
public MainWindow()

InitializeComponent();
lsv = new System.Windows.Controls.ListView();

//动态的添加一个ListViewItem项
ListViewItem item = new ListViewItem();
item.Content = "123123123";
lsv.Items.Add(item);

//添加到Grid中并设置行和列
Grid.SetRow(lsv,0);
Grid.SetColumn(lsv,0);
grdRoot.Children.Add(lsv);

以上是关于WPF的TreeView通过数据库动态添加修改删除节点功能的主要内容,如果未能解决你的问题,请参考以下文章

WPF TreeView - 如何在添加/删除节点后刷新树?

WPF中TreeView控件数据绑定和后台动态添加数据

C# wpf listview 如何动态添加 高手回答下

wpf如何根据输入信息动态生成treeview

wpf treeview中动态创建的treeViewItem如何用右键触发菜单?

wpf treeview节点前面添加图标