mvvm中ICommon 使用

<i:Interaction.Triggers>
                <i:EventTrigger EventName ="LoadOnDemand">
                    <invoke:InvokeDelegateCommandAction Command="{Binding LoadOnDemandCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=InvokeParameter}"/>
                </i:EventTrigger>
                <i:EventTrigger EventName="Edited">
                    <invoke:InvokeDelegateCommandAction Command="{Binding RadTreeViewEditedCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=InvokeParameter}"/>
                </i:EventTrigger>
            </i:Interaction.Triggers>
 
 <telerik:RadContextMenu x:Name="radContextMenu">
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName = "Opened">                          
                            <i:InvokeCommandAction Command = "{Binding NodeMenuOpenCommand}" CommandParameter="{Binding ElementName=radContextMenu}" />
                        </i:EventTrigger >
                    </i:Interaction.Triggers>

以上两种触发方式在viewmodel中使用,第一种回传的是页面触发的事件。

  private ICommand _LoadOnDemandCommand;
        public ICommand LoadOnDemandCommand
         {
             get
             {
                 if (this._LoadOnDemandCommand == null)
                     this._LoadOnDemandCommand = new RelayCommand<RadRoutedEventArgs>(e =>
                     {
                         globelRadTreeViewItem=e.OriginalSource as RadTreeViewItem;
                         GetChildrenMetrics2(globelRadTreeViewItem.Tag as MetricNode);
                     });
                 return this._LoadOnDemandCommand;
             }
         }


第二种回传的参数是一个页面上的对象。

 private ICommand _NodeMenuOpenCommand;
        public ICommand NodeMenuOpenCommand
        {
            get
            {
                if (this._NodeMenuOpenCommand == null)
                    this._NodeMenuOpenCommand = new RelayCommand<object>(p =>
                    {
                        var radMenu = p as RadContextMenu;
                        RadTreeViewItem treeViewItem = radMenu.GetClickedElement<RadTreeViewItem>();
                        if (null!=treeViewItem)
                        {
                            _rightClickItem = treeViewItem;
                            //_rightClickNode = treeViewItem.Tag as MetricNode;
                            //string _rightClickNodeId = _rightClickNode.NodeId.ToString();
                            foreach (var item in radMenu.Items)
                            {
                                ((RadMenuItem)item).IsEnabled = true;
                                ((RadMenuItem)item).Visibility = Visibility.Visible;
                            }                        
                        }
                        else
                        {
                            foreach (var item in radMenu.Items)
                            {
                                ((RadMenuItem)item).IsEnabled = false;
                                ((RadMenuItem)item).Visibility = Visibility.Collapsed;
                            }                        
                        }
                    });
                return this._NodeMenuOpenCommand;
            }
        }




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值