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); }
标签:xmlns,http,Triggers,com,xaml,System,fileName,Interaction,任意 From: https://www.cnblogs.com/JohnnyLei/p/17791069.html