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); }
    }
}



posted @   double64  阅读(678)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示