WPF中控件绑定XML文件,实现修改XML文件即可以改变程序控件内容

       最近一直在研究WPF这个微软提供的用于设计软件产品界面的类库,WPF有一个明显的好处,就是界面设计与界面功能代码编写完全分离,而且从真正意义上实现了数据驱动程序的原理,对于目前正在做软件产品设计的产品设计师们,是一个很大的福音啊.

       在正式开始介绍本章内容之前,请大家确保已经准备好了以下工具:

       1. Microsoft Express Blend4

       2. Microsoft Visual Studio 2010

       3. 一款XML文件的编辑器工具(网上好多,其实用记事本就可以编辑)

       在大家准备好以上工具之后,就开始准备整个项目的神奇之旅吧!!!


       步骤一:

       打开Blend4工具,建立一个工程(注意选择WPF应用程序),选择.Net FrameWork的版本为4.0


       步骤二:

       在Blend4工具上的"控件"项中,分别像Form中拖入一个Menu菜单并命名为"SysMenu",一个TreeView树型控件并命名为"SysTreeView",以及一个TabControl控件,并命名为"SysTabControl".


       步骤三:

       打开编辑XML文件的工具,分别编写供Menu以及TreeView使用的XML文件,分别命名为Menu.xml以及TreeView.xml

       1. Menu.xml    

       <?xml version="1.0" encoding="utf-8" ?>
       <menu>
	      <menuitem Name="File">
	          <menuitem Name="Open" />	 
	          <menuitem Name="Open Recent" />
	          <menuitem Name="Save" />
	          <menuitem Name="Exit" />
	      </menuitem>
	      <menuitem Name="Tool">
	          <menuitem Name="Verify" />	 
	          <menuitem Name="Sign" />
	          <menuitem Name="Compare" />
	          <menuitem Name="Check" />
	      </menuitem>
      </menu>
       2. TreeView.xml     
<?xml version="1.0" encoding="utf-8" ?>
<item>
	<viewitem name="Management">
		<viewitem name="First">
			<viewitem name="information" />
			<viewitem name="download file" />
			<viewitem name="delete file" />
			<viewitem name="execute file" />
		</viewitem>
		<viewitem name="Second">
			<viewitem name="information" />
			<viewitem name="download file" />
			<viewitem name="delete file" />
			<viewitem name="execute file" />
		</viewitem>
	</viewitem>
</item>

  
       步骤四:

       修改MainWindow.xaml文件中的Menu以及TreeView控件中的Item显示模板,具体修改部分为:      

        <Menu Name="SysMenu"  Height="31" VerticalAlignment="Top" Style="{DynamicResource MFaceStyle}">
            <Menu.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding XPath=menuitem}">
                    <TextBlock Text="{Binding XPath=@Name}" />
                </HierarchicalDataTemplate>
            </Menu.ItemTemplate>
        </Menu>
        <TreeView Name="SysTreeView"  HorizontalAlignment="Left" Margin="4,35,0,4" Width="200">
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding XPath=viewitem}">
                    <TextBlock Text="{Binding XPath=@name}" MouseLeftButtonDown="TextBlock_MouseLeftButtonDown"/>
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>

       步骤五:

       修改MainWindow.xaml.cs中内容

       1. 将XML文件作为数据源绑定到Menu中

        private void LoadMenuItem()
        {
            string xmlpath = Directory.GetCurrentDirectory() + "\\Menu.xml";

            XmlDocument xml = new XmlDocument();
            xml.Load(xmlpath);

            XmlDataProvider xdp = new XmlDataProvider();
            xdp.Document = xml;
            xdp.XPath = @"/menu/menuitem";

            this.SysMenu.DataContext = xdp;
            this.SysMenu.SetBinding(Menu.ItemsSourceProperty, new Binding());
	}
       2. 将XML文件作为数据源绑定到TreeView中

        private void LoadTreeView()
        {
            string xmlpath = Directory.GetCurrentDirectory() + "\\TreeView.xml";

            XmlDocument xml = new XmlDocument();
            xml.Load(xmlpath);

            XmlDataProvider xdp = new XmlDataProvider();
            xdp.Document = xml;
            xdp.XPath = @"/item/viewitem";

            this.SysTreeView.DataContext = xdp;
            this.SysTreeView.SetBinding(TreeView.ItemsSourceProperty, new Binding());
        }
       3. 增加选择TreeView中的Item后,修改TabControl控件中Tab的标题

        private void TextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            TextBlock tb = (TextBlock)sender;

            if (tb.Text == "information")
            {
                ((TabItem)this.SysTabControl.Items[0]).Header = tb.Text;
            }
            else if (tb.Text == "download file")
            {
                ((TabItem)this.SysTabControl.Items[0]).Header = tb.Text;
            }
            else if (tb.Text == "delete file")
            {
                ((TabItem)this.SysTabControl.Items[0]).Header = tb.Text;
            }
            else if (tb.Text == "execute file")
            {
                ((TabItem)this.SysTabControl.Items[0]).Header = tb.Text;
            }
            else
            {
                ((TabItem)this.SysTabControl.Items[0]).Header = "初始信息";
            }
        }

       4. 增加初始化内容

       public MainWindow()
	{
	    this.InitializeComponent();

	    // 在此点下面插入创建对象所需的代码。
            LoadMenuItem();
            LoadTreeView();            
	}

       步骤六:

       保存Blend4编译的工程文件后,使用VS2010打开工程并编译,就能看到效果啦!!!!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值