WPF之Menu绑定XML

一、XML文件

<?xml version="1.0" encoding="utf-8" ?>
<MenuData xmlns="">
  <Operation  Name="文件" Gesture="F">
    <Operation Name="新建" Gesture="N">
      <Operation Name="网站" Gesture="Control+W">
      </Operation>
      <Operation Name="文档" Gesture="Control+D">
      </Operation>
      <Operation Name="项目" Gesture="Control+P">
      </Operation>
    </Operation>
  </Operation>
  <Operation  Name="编辑" Gesture="E">
    <Operation Name="复制" Gesture="Control+C">
    </Operation>
    <Operation Name="粘贴" Gesture="Control+V">
    </Operation>
  </Operation>
  <Operation  Name="帮助" Gesture="E">
  </Operation>
</MenuData>

二、Xaml文件

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <XmlDataProvider x:Key="menudata" Source="MenuData.xml" XPath="MenuData/Operation"></XmlDataProvider>
        <HierarchicalDataTemplate DataType="Operation"
                                  ItemsSource="{Binding XPath=Operation}">
            <StackPanel Orientation="Horizontal" >
                <TextBlock Text="{Binding [email protected]}" HorizontalAlignment="Left"></TextBlock>
                <TextBlock Text="{Binding [email protected]}" HorizontalAlignment="Left"></TextBlock>
            </StackPanel>

        </HierarchicalDataTemplate>
    </Window.Resources>
    <Grid>
        <StackPanel MenuItem.Click="StackPanel_Click">

                <Menu ItemsSource="{Binding Source={StaticResource menudata}}"></Menu>

        </StackPanel>

    </Grid>
</Window>

三、后台代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Xml;

namespace WpfApplication1
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void StackPanel_Click(object sender, RoutedEventArgs e)
        {
            MenuItem mi = e.OriginalSource as MenuItem;
            XmlElement xe = mi.Header as XmlElement;
            MessageBox.Show(xe.Attributes["Name"].Value);
        }
    }
}

WPF之Menu绑定XML

时间: 2024-12-28 10:40:14

WPF之Menu绑定XML的相关文章

WPF元素的绑定

一.两个元素的简单绑     WPF元素的绑定,是指将两个控件绑在一起,比如利用滑动条Slider,改变刻度时,相应的标签元素中的字体的大小就会增加. 这种元素的绑定,要知道谁是目标元素,谁是源元素.比如用滑动条的刻度大小去绑定标签元素中的字体的大小.这里面滑动条的刻度就是源元素,标签字体大小就是目标元素. 在标签元素中字体大小的属性中就可以去直接绑定,绑定语句是: FontSize="{Binding ElementName=slider1,Path=Value} 解释:Binding Ele

WPF使用异步+绑定的方式处理大数据量

WPF的优势在于界面处理,即使是这样,在面对大数据量的时候也免不了界面假死,同一个线程里处理界面跟大数据量,这是不可避免的.解决办法还是有的,可以使用分页显示,虚拟加载,增加条件限制... 比较好的解决办法是使用异步+绑定的方式,即绑定控件的数据源,异步获取数据.要解决界面假死,异步获取数据是很容易想到的,但是即使这样,获取到数据之后再设置控件的数据源,这又是一个耗时的过程,所以需要绑定.如果有ViewModel(前提是实现了INotifiPropertyChanged)那就更好了,直接设置属性

wpf直接绑定xml生成应用程序

目的:在vs2010下用wpf完成一个配置工具,配置文件为xml格式,xml文件作为数据源,直接和wpf前台绑定,生成exe后,运行exe能够加载同路径下的xml配置文件并显示 xml文件在项目中的设置不同: 生成操作为内容,始终复制,可以直接修改exe同目录下的xml文件,xml文件内容的变化能体现到exe启动后的界面,exe大小为16K,xml大小为3K, 生成操作为Resource,始终复制,修改xml文件,exe启动后显示内容没有变化,exe大小为18K,可见Resource时,生成的e

menu/main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/copy" android:orderInCategory="100" android:title="@string/create_class"/> <item android:id="@+id/delete&

C# Wpf集合双向绑定

msdn中   ObservableCollection<T> 类    表示一个动态数据集合,在添加项.移除项或刷新整个列表时,此集合将提供通知. 在许多情况下,所使用的数据是对象的集合. 例如,数据绑定中的一个常见方案是使用 ItemsControl(如 ListBox.ListView 或 TreeView)来显示记录的集合. 可以枚举实现 IEnumerable 接口的任何集合. 但是,若要设置动态绑定,以便集合中的插入或删除操作可以自动更新 UI,则该集合必须实现 INotifyCo

WPF: 菜单(Menu)中添加最近打开文件清单(Recent Files)

参考: http://www.codeproject.com/Articles/23731/RecentFileList-a-WPF-MRU 注意: 主要用到RecentFileList.cs文件.需要在Init(初始化)中添加点击Menu的事件处理方法:Open, Save和SaveAs中调用InsertFile方法. 作者用了注册表和XML文件两种方式来存储文件路径信息.在原代码中是调用的注册表方法(RegistryPersister),可以改为XML文件的方法(XmlPersister).

WPF/Silverlight 页面绑定Model验证机制升级版

关于WPF/Silverlight的数据验证,想必大家都不陌生了. 各大牛的博客里都不泛对这方面讨论的文章. 个人比较赞赏 JV9的“Silverlight实例教程”里的Validation数据验证. 本文是在大牛基础上做了个升级,其验证更加简单和方便. 1.创建验证的基类 public class ValidationBase:IDataErrorInfo,INotifyPropertyChanged { protected string errMsg; private bool hasVal

WPF系列——简单绑定学习

1. 绑定到元素对象.(实际项目中用处不大) 界面上两个关联的控件之间绑定,比如一个TextBlock 的FontSize和一个Slider 的Value绑定: <Slider Name="sliderFontText" Minimum="1" Maximum="100" Value="10"/> <TextBox Name="txtValue" Width="200"

&lt;转&gt;WPF 中的绑定

在WPF应用的开发过程中Binding是一个非常重要的部分. 在实际开发过程中Binding的不同种写法达到的效果相同但事实是存在很大区别的. 这里将实际中碰到过的问题做下汇总记录和理解. 1. source = {binding} 和source = {binding RelativeSource={RelativeSource self},Path=DataContext}效果相同 理解:{binding} 不设定明确的绑定的source,这样binding就去从本控件类为开始根据可视树的层