wpf Interaction Triggers 绑定任意方法、任意Command

引用地址:https://www.cnblogs.com/JohnnyLei/p/17791069.html

 framework版本引入命名空间

  通过在代码中引入System.Windows.Interactivity.dll,引入了这个dll后我们就能够使用这个里面的方法来将事件映射到ViewModel层了,我们来看看具体的使用步骤,第一步就是引入命名控件

 xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

另外还可以通过另外一种方式来引入命名空间 是一样的。

 xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"

.net版本引入命名空间 

安装 Microsoft.Xaml.Behaviors.Wpf 包

 xmlns:i="http://schemas.microsoft.com/xaml/behaviors"

1、绑定任意方法

xaml设置:

xaml顶部:

      xmlns:i="http://schemas.microsoft.com/xaml/behaviors"

      prism:ViewModelLocator.AutoWireViewModel="True"

      xmlns:prism="http://prismlibrary.com/"

 xaml设置Interaction:

   <Grid  AllowDrop="True">
       <i:Interaction.Triggers>
           <i:EventTrigger EventName="Drop">
               <i:CallMethodAction  TargetObject="{Binding}"  MethodName="Grid_Drop" ></i:CallMethodAction>
           </i:EventTrigger>
       </i:Interaction.Triggers>
 </Grid>

 viewmodel设置方法,传递参数:

        public  void Grid_Drop(object sender, DragEventArgs e)
        {
            try
            {
                var res = e.Data.GetData(DataFormats.FileDrop);
                string[] fileNames = ((string[])res);
                if (fileNames == null || fileNames.Count() == 0)
                {
                    return;
                }
                foreach (string fileName in fileNames)
                {
                    if (!fileName.EndsWith("acd"))
                    {
                        continue;
                    }
                    if (!File.Exists(fileName))
                    {
                        return;
                    }

                    SetMainTabItemView(fileName);
                }
            }
            catch (System.Exception)
            {
            }
        }

2、绑定vm中任意 command

xaml顶部:

      xmlns:i="http://schemas.microsoft.com/xaml/behaviors"

      prism:ViewModelLocator.AutoWireViewModel="True"

      xmlns:prism="http://prismlibrary.com/"

xaml设置Interaction:

    <Grid  AllowDrop="True">
    
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="Drop">
                <i:InvokeCommandAction Command="{Binding Grid_DropCommand}"  CommandParameter="{Binding}" ></i:InvokeCommandAction>
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </Grid>

viewmodel command设置:

  public ICommand Grid_DropCommand => new DelegateCommand<object>(ExecuteGrid_DropCommand);

  private void ExecuteGrid_DropCommand(object obj)
  {
      Debug.WriteLine(obj);
  }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值