wpf中右键菜单的代码后置

Devexpress的WPF控件代码示例网上太少了,想在控件基类里面设置一个右键菜单都查了好久没有查到,最后自己摸索出来一个方法,如下面代码

    public class UILayoutControl : LayoutControl
    {
        public UILayoutControl():base()
        {
            BarManager manager = new BarManager();
            manager.ItemClick += Manager_ItemClick;

            BarButtonItem btnModify = new BarButtonItem();
            btnModify.Name = "itemModify";
            btnModify.SetResourceReference(BarButtonItem.ContentProperty, "layoutModify");
            manager.Items.Add(btnModify);
            BarButtonItem btnSave = new BarButtonItem();
            btnSave.Name = "itemSave";
            btnSave.SetResourceReference(BarButtonItem.ContentProperty, "layoutSave");
            manager.Items.Add(btnSave);

            //定义右键菜单的布局
            PopupMenu popupMenu = new PopupMenu();
            popupMenu.ItemLinks.Add(btnModify);
            popupMenu.ItemLinks.Add(new BarItemLinkSeparator());//分割线
            popupMenu.ItemLinks.Add(btnSave);

            //将右键菜单设置到控件上
            DevExpress.Xpf.Bars.BarManager.SetDXContextMenu(this, popupMenu);

            //this.ContextMenu = new System.Windows.Controls.ContextMenu();
            //MenuItem itemModify = new MenuItem();
            //itemModify.Name = "itemModify";
            //itemModify.Header = "调整布局";
            //itemModify.Click += ItemModify_Click;
            //this.ContextMenu.Items.Add(itemModify);
            //MenuItem itemSave = new MenuItem();
            //itemSave.Name = "itemSave";
            //itemSave.Header = "保存布局";
            //itemSave.Click += itemSave_Click;
            //this.ContextMenu.Items.Add(itemSave);

        }

        //private void ItemModify_Click(object sender, System.Windows.RoutedEventArgs e)
        //{
        //    this.IsCustomization = true;
        //}

        //private void itemSave_Click(object sender, System.Windows.RoutedEventArgs e)
        //{
        //    this.IsCustomization = false;
        //    using (XmlWriter writer = XmlWriter.Create("CustomerNewElementArribute.xml"))
        //    {
        //        this.WriteToXML(writer);
        //        writer.Close();
        //    }
        //}

        private void Manager_ItemClick(object sender, ItemClickEventArgs e)
        {
            if (e.Item.Name == "itemModify")
            {
                this.IsCustomization = true;
            }
            else if (e.Item.Name == "itemSave")
            {
                this.IsCustomization = false;
                using (XmlWriter writer = XmlWriter.Create("CustomerNewElementArribute.xml"))
                {
                    this.WriteToXML(writer);
                    writer.Close();
                }
            }
        }
    }

效果如图

虽然注释掉的代码也可以实现右键菜单,但是样式都是原生的,不是Devexpress的。代码中还是用了菜单名称动态加载字典资源方法,不能直接使用标记扩展语言直接赋值,那样直接解析为字符串,不会加载字典资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值