WPF TreeView 树型控件绑定 Binding
XAML:
<Window.DataContext>
<local:VMTempTest/>
</Window.DataContext>
<Grid>
<StackPanel Margin="10">
<TextBlock Text="树" FontWeight="Bold" Margin="0,5,0,5" ></TextBlock>
<DockPanel x:Name="TreeButton" >
<StackPanel DockPanel.Dock="Left" >
<TreeView ItemsSource="{Binding TreeInfo}" x:Name="tree" BorderThickness="0" FontSize="16">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text="{Binding NodeName}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</StackPanel>
<StackPanel DockPanel.Dock="Right" Margin="50 0 0 0" VerticalAlignment="Center" Orientation="Horizontal" DataContext="{Binding SelectedItem,ElementName=tree}">
<TextBlock Text="结果:"/>
<TextBlock Text="{Binding NodeID,StringFormat='NodeID:\{0\}'}" Margin="0,0,20,0" />
<TextBlock Text="{Binding NodeName,StringFormat='NodeName:\{0\}'}"/>
</StackPanel>
</DockPanel>
</StackPanel>
</Grid>
Models:
public class TreeNodeModel : ObservableObject
{
public string NodeID { get; set; }
public string NodeName { get; set; }
public List<TreeNodeModel> Children { get; set; }
}
ViewModel:
public class VMTempTest : ViewModelBase
{
public VMTempTest()
{
TreeInfo = new List<TreeNodeModel>()
{
new TreeNodeModel(){
NodeID = "1", NodeName = "苹果",Children=new List<TreeNodeModel>(){
new TreeNodeModel(){ NodeID="1.1", NodeName ="苹果A" },
new TreeNodeModel(){ NodeID="1.2", NodeName ="苹果B" },
new TreeNodeModel(){ NodeID="1.3", NodeName ="苹果C",Children = new List<TreeNodeModel>(){
new TreeNodeModel(){ NodeID="1.3.1", NodeName ="苹果C1" },
new TreeNodeModel(){ NodeID="1.3.2", NodeName ="苹果C2" },
} },
}
},
new TreeNodeModel(){
NodeID = "2", NodeName = "香蕉",Children=new List<TreeNodeModel>(){
new TreeNodeModel(){ NodeID="2.1", NodeName ="香蕉A" },
new TreeNodeModel(){ NodeID="2.2", NodeName ="香蕉B" },
new TreeNodeModel(){ NodeID="2.3", NodeName ="香蕉C" }
}
}
};
}
private List<TreeNodeModel> treeInfo;
/// <summary>
/// 树控件数据信息
/// </summary>
public List<TreeNodeModel> TreeInfo
{
get { return treeInfo; }
set { treeInfo = value; RaisePropertyChanged(() => TreeInfo); }
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了