zoukankan      html  css  js  c++  java
  • Silverlight 中 TreeView 的数据绑定

    方法一:Silverlight使用XAML标记语言来编写,如果不使用XAML强大的绑定功能,实在是罪过。通过使用绑定
    ,可以将UI与视图模型层分离,有利于系统的维护。作为Silverlight中比较有代表型的一个控件: TreeV
    iew 有着比较特殊的绑定。与一般的绑定不同,绑定到TreeView的元素之间是一个无限级联的关系。下面
    是这种绑定的最简单实现过程。

    1, 引用命名空间:clr­namespace:System.Windows;assembly=System.Windows.Controls;给这
    个命名空间取个别名:common

    2, 为TreeView 定义数据源。这里实际上只是定义了TreeNode绑定的实体的定义,TreeView绑定的则是
    这个实体对象的集合,该实体对象的定义如下:

     public class TreeNode
      {
         public string Name { getset; }
          public Collection<TreeNode> Nodes { getset; }
      }

    3, 定义TreeView中节点的模板,这个模板需要使用分层的数据模板:common:HierarchicalDataTemp
    late;其代码如下:

      <UserControl.Resources>
             <common:HierarchicalDataTemplate x:Key="TreeNodeTemplate" ItemsSource="{Binding Path=Nodes}" >
                 <TextBlock Text="{Binding Path=Name}" />
            </common:HierarchicalDataTemplate>
        </UserControl.Resources>

    4, 将在第3步中定义的模板绑定到TreeView控件。他的绑定也是很简单,如下面的代码所示:

      <sdk:TreeView HorizontalAlignment="Left" Margin="12,12,0,12" Name="treeView1" Width="199" ItemTemplate="{StaticResource TreeNodeTemplate}" />

    上面的两行代码,即完成了TreeView的绑定, 只需要将在第3步中定义的模板绑定到TreeView控件的Ite
    mTemplate即可。以上这4步完成之后,只需要为 TreeView ItemSource指定一个 TreeNode的集合,
    即可将此实体绑定到 TreeView中。

    方法二:为了让标记更加简洁,此示例中,将这一操作放到前页面的后台代码
    中,如下所示:

     public partial class Page1 : UserControl
        {
            public Page1()
            {
                InitializeComponent();
            }
    
            private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
            {
                Person p = new Person();
                p.Name = "xujiaoxiang";
                p.Age = 123;
                p.Address = "dd";
                this.LayoutRoot.DataContext = p;
            }
    
            private void TreeView_Loaded(object sender, RoutedEventArgs e)
            {
                Tree tree = new Tree();
                tree.Name = "root";
                tree.Children = new List<Tree>();
                for (int i = 0; i < 5; i++)
                {
                    Tree child = new Tree();
                    child.Name = "child" + i.ToString();
                    child.Children = new List<Tree>();
                    for (int j = 0; j < i; j++)
                    {
                        Tree sub = new Tree();
                        sub.Name = "sub" + j.ToString();
                        sub.Children = null;
                        child.Children.Add(sub);
                    }
                    tree.Children.Add(child);
                }
                myTreeView.DataContext = tree;
                //myTreeView.ItemsSource = tree.Children;
            }
    
            public class Tree
            {
                public string Name { get; set; }
                public List<Tree> Children { get; set; }
            }
        }
  • 相关阅读:
    Codeforces 67A【模拟】
    Codeforces325 D【并查集维护连通性】
    CodeForces 363D 【二分+贪心】
    Lightoj1084【DP啊DP】
    lightoj1062【几何(二分)】
    lightoj1066【BFS】
    lightoj1064 【DP求方案】
    lightoj1063【求割点】
    lightoj 1074【spfa判负环】
    CodeForces 382C【模拟】
  • 原文地址:https://www.cnblogs.com/hongmaju/p/4281001.html
Copyright © 2011-2022 走看看