Silverlight TreeView 动态绑定Xml 文件
随着应用程序的不断升级,客户的需求不断增多,程序员不得不对自己的应用程序做出相应的修改,如果修改的内容较多,那么就必须找出一种简便方法,下面就为大家介绍一下在SilverLight 中左边导航栏TreeView 如何动态绑定 Xml 文件中的数据
1、准备工作,首先建立一个TreeViewData.xml文件,代码如下:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<node name="系统管理">
<node name="添加用户"/>
<node name="用户管理"/>
<node name="修改密码"/>
<node name="系统参数"/>
</node>
<node name="操作管理">
<node name="违法数据录入"/>
<node name="违法信息套打" />
<node name="业务办理" />
</node>
</root>
2、建立一个TreeViewLoadXmlTest.xaml文件并在其中添加如下代码:
<navigation:Page x:Class="MySilverLight.TreeViewLoadXmlTest"
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:common="clr-namespace:System.Windows;assembly=System.Windows.Controls"
xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
mc:Ignorable="d"
xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
d:DesignWidth="640" d:DesignHeight="480"
Title="TreeViewLoadXmlTest Page">
<Grid x:Name="LayoutRoot">
<StackPanel Background="#ffc">
<StackPanel.Resources>
<common:HierarchicalDataTemplate
x:Key="childTemplate"
ItemsSource="{Binding Path=Children}">
<StackPanel>
<TextBlock Text="{Binding Path=Title}"
FontStyle="Italic"/>
</StackPanel>
</common:HierarchicalDataTemplate>
<common:HierarchicalDataTemplate
x:Key="treeTemplate"
ItemsSource="{Binding Path=Children}"
ItemTemplate="{StaticResource childTemplate}">
<TextBlock Text="{Binding Path=Title}"
FontWeight="Bold"/>
</common:HierarchicalDataTemplate>
</StackPanel.Resources>
<!--
ItemsSource - 数据源
ItemTemplate - 指定层级显示数据的模板
-->
<controls:TreeView x:Name="treeView" Margin="5"
ItemsSource="{Binding}"
ItemTemplate="{StaticResource treeTemplate}"
SelectedItemChanged="treeView_SelectedItemChanged">
</controls:TreeView>
</StackPanel>
</Grid>
</navigation:Page>
值得注意的是,在写代码之前,需要在头部加上这样两句话:
xmlns:common="clr-namespace:System.Windows;assembly=System.Windows.Controls"
xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
否则,在后面会提示common 和controls出错
3、接下来需要准备一个TreeViewModel.cs类,代码如下:
namespace MySilverLight
{
public class TreeViewModel
{
public string Title { get; set; }
public Uri Address { get; set; }
public List<TreeViewModel> Children { get; set; }
}
}
在此需要引入using System.Collections.Generic;
4、打开后台代码文件TreeViewLoadXmlTest.xaml.cs ,代码如下:
namespace MySilverLight
{
public partial class TreeViewLoadXmlTest : Page
{
public TreeViewLoadXmlTest()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(TreeView_Loaded);
} // 当用户导航到此页面时执行。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
}
void TreeView_Loaded(object sender, RoutedEventArgs e)
{
XElement root = XElement.Load("TreeViewData.xml"); // 构造带层级关系的数据源(递归方式)
var result = LoadData(root); treeView.DataContext = result;
}
private List<TreeViewModel> LoadData(XElement root)
{
if (root == null)
return null; var items = from n in root.Elements("node")
select new TreeViewModel
{
Title = (string)n.Attribute("name"),
Children = LoadData(n)
}; return items.ToList();
}
private void treeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
MessageBox.Show(((TreeViewModel)e.NewValue).Title);
}
}
}
这里同样值得注意的是,需要引用命名空间,System.Xml.Linq;否则XElement会提示找不到;
直到这里,我们的工作基本上算是完成了,效果如下:

本文出自 “程序人生_意念” 博客,请务必保留此出处http://07180402.blog.51cto.com/3679519/987599
Silverlight TreeView 动态绑定Xml 文件的更多相关文章
- Silverlight 中 读取XML文件
一:xml文件 二:后台代码 private void ReadXml() { List<TreeViewItem> nodes = new List<TreeViewItem> ...
- jquery递归遍历xml文件,形成ul-li序列,生成树结构(使用了treeview插件)
treeview插件从这里获得,下载的文件中有demo,看demo文件夹里面的index.html文件就差不多知道如何使用该控件了,在我做的项目里用到的部分代码截图如下(在引用下面的js文件前要先引用 ...
- 转载 Silverlight实用窍门系列:1.Silverlight读取外部XML加载配置---(使用WebClient读取XAP包同目录下的XML文件))
转载:程兴亮文章,地址;http://www.cnblogs.com/chengxingliang/archive/2011/02/07/1949579.html 使用WebClient读取XAP包同 ...
- 继承,多态,集合,面向对象,XML文件解析,TreeView动态加载综合练习----->网络电视精灵项目练习、分析
网络电视精灵 项目运行状态如图: 项目完成后的类: 首先,将程序分为二部分进行: 一:TreeView节点内容的设计及编写: 1.1遍写XML文件:管理(FullChannels.xml),A类电视台 ...
- 将Xml文件递归加载到TreeView中
#region [通过XDocument的方式将Xml文件递归到TreeView控件中] //读取Xml文件(XDocument) //1.加载Xml文件 XDocument document=XD ...
- C#关于xml文件和TreeView之间的转换解析
主窗体: using System; using System.Collections; using System.Collections.Generic; using System.Componen ...
- 使用TreeView加载XML文件
PS: 由于小弟初学编程,本文只写实现方式,代码写的不是很好请见谅! 1.需要读取的xml文档内容 2. 最终实现效果 3 貌似看起实现起来很复杂 但是想想还是挺简单 思路: 读取XML文档 →获 ...
- C#读取xml文件写入到TreeView中
开发过程中我们会遇到一些读取xml文件的时候,下面是我学习的整理. 用XmlDocument读取加载 XmlDocument doc = new XmlDocument(); doc.Load(&qu ...
- Silverlight实用窍门系列:2.Silverlight动态加载外部XML指定地址的WebService---(动态加载外部XML文件中指定的WebService地址)【附带实例源码】
接上节所讲的,Silverlight可以加载外部的XML文件里面的内容,那么我们可不可以在外部XML里面配置一个WebService地址,并且以此加载这个地址来动态加载WebService呢?这样子就 ...
随机推荐
- css3+js打造炫酷图片展示
<!DOCTYPE html> <html onselectstart="return false"> <!-- onselectstart=&quo ...
- db2工具优化
- 深入浅出-Android系统移植与平台开发(一)- Android4.0系统的下载与编译
作者:唐老师,华清远见嵌入式学院讲师. 一.Android4.0系统的下载与编译 Android系统的下载与编译,Google的官方网站上已经给出了详细的说明,请参照Android的官方网址: htt ...
- 如何使用Apache的ab工具进行网站性能测试
1.打开Apache服务器的安装路径,在bin目录中有一个ab.exe的可执行程序,就是我们要介绍的压力测试工具. 2.在Windows系统的命令行下,进入ab.exe程序所在目录,执行ab.exe程 ...
- 序列化,反序列化,模拟ATM机
package com.bank.unionpay; //银行卡的接口 public interface I_yinhangka { //抽象方法 //public abstract默认修饰抽象的 p ...
- List相关知识点.......课堂加整理
package lis0924; //接口List(列表) import java.util.ArrayList; import java.util.Iterator; import java.uti ...
- ob_clean()
我在本地写的系统,部署到虚拟机上的时候,验证码出现问题不显示.加上这个函数之后,验证码出现了.具体的该学习去了.
- 导入excle数据将excle数据插入到数据库
实现功能是,用户可以直接导入对应数据,或者用户下载模板,填写数据,导入模板数据.easyui实现 前台页面 { text : '日清导入', iconCls : 'icon-print', handl ...
- bind绑定事件,摁回车键提交查询,点击查询也可以提交查询
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- JSONObject简介
JSONObject简介 本节摘要:之前对JSON做了一次简单的介绍,并把JSON和XML做了一个简单的比较:那么,我就在想,如果是一个json格式的字符串传到后台,需要怎么对其处理?如果前台页面需要 ...