地图操作功能(加载数据,放大缩小,保存等)利用icommand实现。

11 篇文章 1 订阅
 private void barButtonItem2_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            ICommand m_Add = new ESRI.ArcGIS.Controls.ControlsAddDataCommandClass();
            m_Add.OnCreate(axMapControl1.Object);
            m_Add.OnClick();
            ITool pTool = m_Add as ITool;
            axMapControl1.CurrentTool = pTool;
        }


        private void barButtonItem3_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            ICommand m_Pan = new ESRI.ArcGIS.Controls.ControlsMapPanTool();
            m_Pan.OnCreate(axMapControl1.Object);
            m_Pan.OnClick();
            ITool pTool = m_Pan as ITool;
            axMapControl1.CurrentTool = pTool;
        }


        private void barButtonItem4_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            ICommand m_Extent = new ESRI.ArcGIS.Controls.ControlsMapFullExtentCommand();
            m_Extent.OnCreate(axMapControl1.Object);
            m_Extent.OnClick();
            ITool pTool = m_Extent as ITool;
            axMapControl1.CurrentTool = pTool;
        }


        private void barButtonItem5_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            ICommand m_EditingSave = new ESRI.ArcGIS.Controls.ControlsSaveAsDocCommand();
            m_EditingSave.OnCreate(axMapControl1.Object);
            m_EditingSave.OnClick();
            ITool pTool = m_EditingSave as ITool;
            axMapControl1.CurrentTool = pTool;
        }


        private void barButtonItem6_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            ICommand m_Zoomin = new ESRI.ArcGIS.Controls.ControlsMapZoomInToolClass();
            m_Zoomin.OnCreate(axMapControl1.Object);
            m_Zoomin.OnClick();
            ITool pTool = m_Zoomin as ITool;
            axMapControl1.CurrentTool = pTool;
        }


        private void barButtonItem7_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            ICommand m_Zoomout = new ESRI.ArcGIS.Controls.ControlsMapZoomOutToolClass();
            m_Zoomout.OnCreate(axMapControl1.Object);
            m_Zoomout.OnClick();
            ITool pTool = m_Zoomout as ITool;
            axMapControl1.CurrentTool = pTool;
        }
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在WPF中,可以通过实现ICommand接口来创建自定义命令,并将其绑定到UI元素上。以下是一个简单的实现示例: ``` public class MyCommand : ICommand { private Action<object> _execute; private Func<object, bool> _canExecute; public MyCommand(Action<object> execute, Func<object, bool> canExecute = null) { _execute = execute; _canExecute = canExecute; } public bool CanExecute(object parameter) { return _canExecute == null || _canExecute(parameter); } public void Execute(object parameter) { _execute(parameter); } public event EventHandler CanExecuteChanged; public void RaiseCanExecuteChanged() { CanExecuteChanged?.Invoke(this, EventArgs.Empty); } } ``` 在这个示例中,我们创建了一个名为MyCommand的自定义命令,它实现ICommand接口的所有方法和事件。构造函数接受一个Action<object>类型的参数,用于指定命令的执行方法;还可以接受一个Func<object, bool>类型的参数,用于指定命令是否可以执行的方法。 在CanExecute方法中,我们检查_canExecute委托是否为null,如果不为null,则调用它来确定命令是否可以执行。在Execute方法中,我们调用_execute委托来执行命令的实际操作。 在RaiseCanExecuteChanged方法中,我们调用CanExecuteChanged事件来通知UI元素,以便它们可以更新命令的可执行状态。 使用自定义命令的示例代码如下: ``` public class MyViewModel { public ICommand MyCommand { get; private set; } public MyViewModel() { MyCommand = new MyCommand(ExecuteMyCommand, CanExecuteMyCommand); } private void ExecuteMyCommand(object parameter) { // 在这里执行命令的操作 } private bool CanExecuteMyCommand(object parameter) { // 在这里确定命令是否可以执行 return true; } } <Button Content="Click Me" Command="{Binding MyCommand}" /> ``` 在这个示例中,我们创建了一个名为MyViewModel的视图模型(ViewModel),其中包含了一个名为MyCommand的自定义命令。在构造函数中,我们实例化了MyCommand,并将其绑定到ExecuteMyCommand和CanExecuteMyCommand方法。最后,在XAML中,我们通过将Button的Command属性绑定到MyCommand,将这个命令与Button关联起来。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值