silverlight 动态加载树形菜单[带图标],方法一

silverlight 动态加载树形菜单[带图标],方法一

 

上代码了......

页面代码:

自定义样式:

 MouseLeftButtonUp事件是我用于末级子节点的点击事件(连续点击)自定义的,因为silverlight的tree没有点击事件,当然你可以使用treeViewItem的Selected事件处理,个人感觉比较麻烦。

个人习惯不同,自己选择处理方式。

    <UserControl.Resources>
        <common:HierarchicalDataTemplate x:Key="Level3Template">
            <StackPanel Orientation="Horizontal">
                <Image Source="{Binding Icon}" Width="16" Height="16"/>
                <TextBlock Text="{Binding Name}"  Foreground="Black" MouseLeftButtonUp="TextBlock_MouseLeftButtonUp"/>
            </StackPanel>
        </common:HierarchicalDataTemplate>
        <common:HierarchicalDataTemplate x:Key="Level2Template" ItemsSource="{Binding Level3s}" ItemTemplate="{StaticResource Level3Template}">
            <StackPanel Orientation="Horizontal">
                <Image Source="{Binding Icon}" Width="16" Height="16"/>
                <TextBlock Text="{Binding Name}" Foreground="Green"/>
            </StackPanel>
        </common:HierarchicalDataTemplate>
        <common:HierarchicalDataTemplate x:Key="Level1Template" ItemsSource="{Binding Level2s}" ItemTemplate="{StaticResource Level2Template}">
            <TextBlock Foreground="Blue"/>
        </common:HierarchicalDataTemplate>
    </UserControl.Resources>

tree目录:

我这里只放了个根节点

<Grid Grid.Column="0" Grid.Row="0" VerticalAlignment="Stretch">
                    <controls:TreeView x:Name="myTree" BorderBrush="White"   ItemTemplate="{StaticResource Level1Template}">
                        <controls:TreeViewItem x:Name="treeItem" Header="XXX管理系统" Foreground="Blue" IsExpanded="True" ItemTemplate="{StaticResource Level2Template}">
                        </controls:TreeViewItem>
                    </controls:TreeView>
                </Grid>

后台代码:

自定义类:

    #region 自定义类
    public class Level1
    {
        public Level1()
        {
            Level2s = new ObservableCollection<Level2>();
        }

        public string Name { get; set; }
        public ObservableCollection<Level2> Level2s { get; set; }
    }

    public class Level2
    {
        public Level2()
        {
            Level3s = new ObservableCollection<Level3>();
        }

        public string Name { get; set; }
        public string Icon { get; set; }
        public ObservableCollection<Level3> Level3s { get; set; }
    }

    public class Level3
    {
        public string Name { get; set; }
        public string Icon { get; set; }
        //public event EventHandler click;
    }
    #endregion

加载树形:

/// <summary>
        /// 初始化目录数据
        /// </summary>
        private void InitTreeData()
        {

            treeItem.ItemsSource = new ObservableCollection<Level2> {
                new Level2
                  {
                    Name="基础信息", Icon = "../ICON/project.png",
                    Level3s = {
                        new Level3 { Name = "类别" ,Icon = "../ICON/sf.png"},
                        new Level3 { Name = "部门" ,Icon = "../ICON/app.png"},
                        new Level3 { Name = "类别2" ,Icon = "../ICON/contractType.png"},
                        new Level3 { Name = "部门2" ,Icon = "../ICON/post_to_blog.png"}
                    }
                  },
                  new Level2
                  {
                    Name="报表管理", Icon = "../ICON/report.png",
                    Level3s = {
                        new Level3 { Name = "报表1" ,Icon = "../ICON/tabs.png"},
                        new Level3 { Name = "报表2" ,Icon = "../ICON/table49.png"},
                        new Level3 { Name = "报表3" ,Icon = "../ICON/table48.png"},
                        new Level3 { Name = "报表4",Icon="../ICON/report.png"}
                    }
                  },
                  new Level2
                  {
                    Name="系统管理",Icon = "../ICON/set.png",
                    Level3s = {
                        new Level3 { Name = "权限设置" ,Icon = "../ICON/tick.png"},
                        new Level3 { Name = "用户管理" , Icon = "../ICON/users.png"}
                    }
                  }
            };

      }

加载菜单(tree)的方式很多,在这里我只提到了这一种,仅供参考!

 附件 :

 /Files/northstar/Silverlight树形菜单带图标.rar

原文地址:https://www.cnblogs.com/northstar/p/1988530.html