zoukankan      html  css  js  c++  java
  • Silverlight使用反射实现TreeView动态导航

    最近在试验用Silverlight做应用系统,效果如下:

    XAML部分代码:
    <controls:TreeView x:Name="tv" Margin="8,50,0,8" HorizontalAlignment="Left" Width="102" FontSize="13.333" Background="#FFFAFAFA">
                
    <controls:TreeViewItem Header="日志" Selected="OnSelected" Tag="UcLog" >
                
    </controls:TreeViewItem>
                
    <controls:TreeViewItem Header="用户" Selected="OnSelected" Tag="UcUser">
                
    </controls:TreeViewItem>
                
    <controls:TreeViewItem Header="组" Selected="OnSelected" Tag="UcGroup">
                
    </controls:TreeViewItem>
            
    <controls:TreeViewItem Header="权限" Selected="OnSelected" Tag="UcPermission">
                
    </controls:TreeViewItem>
            
    <controls:TreeViewItem Header="应用程序" Selected="OnSelected" Tag="UcApplication">
                
    </controls:TreeViewItem>
            
    </controls:TreeView>

         
    <controlsToolkit:DockPanel x:Name="dp" Margin="114,50,8,8"/>

     TreeView的ItemsSource可以通过xml文件或WebService动态绑定

     Selected事件都指向OnSelected方法,Tag为所要导航到的xaml页面名称

    C#代码
    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;

    using System.Reflection;

    namespace UGP_SilverlightApp
    {
        
    public partial class MainPage : UserControl
        {

            
    public MainPage()
            {
                InitializeComponent();
            }

            
    private void OnSelected(object sender, RoutedEventArgs e)
            {
                TreeViewItem tvi
    =(TreeViewItem)sender;
                
    if (tvi.Tag != null)
                {
                    DockPanelAddChildren(dp, (tvi.Tag.ToString()));
                }
            }

            
    void DockPanelAddChildren(DockPanel dp, string formname)
            {
                Assembly ass 
    = Assembly.GetExecutingAssembly();
                UIElement value 
    = (UIElement)ass.CreateInstance("UGP_SilverlightApp." + formname);
                dp.Children.Clear();
                dp.Children.Add(value);
            }
  • 相关阅读:
    vue-打包为webapp,如何解决应用内跳转外部链接返回导致退出应用
    vue-引入mui.js报错如何处理
    微信小程序中-折线图
    Docker基础命令
    retry示例
    authenticate验证的流程
    django生产环境启动问题
    redis基本操作
    DBUtils数据库连接池
    外部程序调用Django模块的解决办法
  • 原文地址:https://www.cnblogs.com/zhlei616/p/1646790.html
Copyright © 2011-2022 走看看