Silverlight中後台動態產生樹菜單

來源:互聯網
上載者:User

標籤:des   style   class   c   tar   ext   

前台

<UserControl xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"  
   x:Class="ttt.Leftmenu"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">
    <Grid x:Name="LayoutRoot" Margin="3">

<!--  樹形標籤結構定義  -->
        <controls:TreeView x:Name="menu" BorderThickness="0" Background="White" FontSize="12">
        </controls:TreeView>
    </Grid>
</UserControl>

  後台:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace ttt{
    public partial class Leftmenu : UserControl
    {
        #region 全域變數

        // 定義按鈕點擊事件給首頁面調用賦值
        public MouseButtonEventHandler OnClick;
        #endregion

        #region 構造方法
        /// <summary>
        /// 構造方法
        /// </summary>
        public Leftmenu()
        {
            InitializeComponent();
            AddTreeNode(0, null);
            this.BindMenuEvent();
        }
        #endregion

        #region  Menu項綁定事件
        /// <summary>
        /// Menu項綁定事件
        /// </summary>
        void BindMenuEvent()
        {
            foreach (TreeViewItem rootItem in this.menu.Items)
            {
                foreach (TreeViewItem item in rootItem.Items)
                {
                    if (item.Tag != null)
                    {
                        item.MouseLeftButtonUp += new MouseButtonEventHandler(item_MouseLeftButtonUp);
                    }
                }
            }
        }
        #endregion

        #region 頁面傳值
        /// <summary>
        /// 頁面傳值
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void item_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            if (OnClick != null)
                OnClick(sender, e);
        }
        #endregion

        #region 定義實體類
        /// <summary>
        /// 定義實體類
        /// </summary>
        public class DeciveInfo
        {
            public int DeciveID { get; set; }
            public int ParendID { get; set; }
            public string DeciveName { get; set; }
            public string pageName { get; set; }
        }
        #endregion

        #region 獲得動態資料的方法
        /// <summary>
        /// 獲得動態資料的方法
        /// </summary>
        /// <returns></returns>
        public List<DeciveInfo> GetForumData()
        {
            List<DeciveInfo> deviceInfoList = new List<DeciveInfo>();

            deviceInfoList.Add(new DeciveInfo() { DeciveID = 1, ParendID = 0, DeciveName = "大項一" });
            deviceInfoList.Add(new DeciveInfo() { DeciveID = 2, ParendID = 0, DeciveName = "大項二" });

            deviceInfoList.Add(new DeciveInfo() { pageName = "UserList", DeciveID = 3, ParendID = 1, DeciveName = "大項一中1" });
            deviceInfoList.Add(new DeciveInfo() { pageName = "UserList1", DeciveID = 4, ParendID = 1, DeciveName = "大項一中2" });
            deviceInfoList.Add(new DeciveInfo() { pageName = "UserList", DeciveID = 5, ParendID = 2, DeciveName = "大項二1" });
            deviceInfoList.Add(new DeciveInfo() { pageName = "UserList1", DeciveID = 6, ParendID = 2, DeciveName = "大項二2" });
            return deviceInfoList;
        }
        #endregion

        #region 添加葉子節點資訊
        /// <summary>
        ///  添加葉子節點資訊
        /// </summary>
        /// <param name="parentID">父親節點資訊</param>
        /// <param name="treeViewItem"></param>
        private void AddTreeNode(int parentID, TreeViewItem treeViewItem)
        {
            // 檢索查詢的集合
            List<DeciveInfo> result = (from deviceInfo in GetForumData() //forumList
                                       where deviceInfo.ParendID == parentID
                                       select deviceInfo).ToList<DeciveInfo>();

            // 查詢結果不為空白的情況下進行一下處理
            if (result.Count > 0)
            {
                foreach (DeciveInfo deciveInf in result)
                {
                    TreeViewItem objTreeNode = new TreeViewItem();
                    objTreeNode.Header = deciveInf.DeciveName;
                    // TODO 頁面的導向
                    objTreeNode.Tag = deciveInf.pageName;
                    objTreeNode.DataContext = deciveInf;

                    //此樣式將會添加的所有葉子結點上
                    objTreeNode.ItemContainerStyle = this.Resources["RedItemStyle"] as Style;

                    //添加根節點
                    if (treeViewItem == null)
                    {
                        menu.Items.Add(objTreeNode);
                    }
                    else
                    {
                        treeViewItem.Items.Add(objTreeNode);
                    }
                    //objTreeNode.is
                    AddTreeNode(deciveInf.DeciveID, objTreeNode);
                }
                // 給父親節點添加屬性資訊
                //objTreeNode.ItemContainerStyle = this.Resources["RedItemStyle"] as Style; 
            }
        }
        #endregion
    }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.