silverlight 动态绑定树TreeView 节点添加CheckBox

xmal.cs:

private void Init()
        {
            TreeViewItem tvi_0 = new TreeViewItem();
            tvi_0.Name = "0";
            StackPanel sp = new StackPanel();
            CheckBox cb = new CheckBox();
            cb.Checked += new RoutedEventHandler((sender, e) =>
            {
                foreach (TreeViewItem item in tvi_0.Items)
                {
                    ((item.Header as StackPanel).Children[0] as CheckBox).IsChecked = true;
                }
            });
            cb.Unchecked += new RoutedEventHandler((sender, e) =>
            {

                foreach (TreeViewItem item in tvi_0.Items)
                {
                    ((item.Header as StackPanel).Children[0] as CheckBox).IsChecked = false;
                }
            });
            cb.Content = "所有";
            sp.Children.Add(cb);
            tvi_0.Header = sp;//关键就是在 这个 Header
            tvi_0.IsExpanded = true;
            treeview_1.Items.Add(tvi_0);
            TreeViewItem tviTmp = null;
            StackPanel sptmp = null;
            CheckBox cbtmp = null;
            for (int i = 0; i < 10; i++)
            {
                tviTmp = new TreeViewItem();
                sptmp = new StackPanel();
                cbtmp = new CheckBox();

                tviTmp.Name = "tviTmp" + i.ToString();
                cbtmp.Name = "cbtmp" + i.ToString();
                sptmp.Name = "sptmp" + i.ToString();

                cbtmp.Content = "CheckBox" + i.ToString();
                sptmp.Children.Add(cbtmp);
                tviTmp.Header = sptmp;
                tvi_0.Items.Add(tviTmp);
            }
        }

 

页面xaml

 <Grid x:Name="LayoutRoot" Background="White">
        <sdk:TreeView Height="200" HorizontalAlignment="Left" Name="treeview_1" Margin="78,24,0,0"  VerticalAlignment="Top" Width="266" />
    </Grid>

posted @ 2012-02-23 19:28  梦想起航  阅读(1161)  评论(1编辑  收藏  举报