这里主要说的是WPF,并且是prism框架中使用。如果不是prism框架也是可以的,代码中,把关于prism的框架去掉即可。
业务:比如我们加载界面完成后,让界面默认执行一个方法,或者执行一个点击事件。
1.首先安装prism的框架,建立好MVVM模式,这里就不说了。
2.在项目中加入2个重要的dll
Microsoft.Expression.Interactions
System.Windows.Interactivity
最终结构是:
3.前台界面代码
<Window x:Class="WpfApp1.MainWindow"xmlns=""xmlns:x=""xmlns:d=""xmlns:mc=""xmlns:prism="/"prism:ViewModelLocator.AutoWireViewModel="True"xmlns:i=""xmlns:ei="" mc:Ignorable="d" Title="MainWindow"><i:Interaction.Triggers><!--这里必须是Load,否则报错--><i:EventTrigger EventName="Loaded" ><!--View_Loaded关联VM中的View_Loaded事件--><ei:CallMethodAction MethodName="View_Loaded" TargetObject="{Binding}" /></i:EventTrigger></i:Interaction.Triggers><Grid><StackPanel Orientation="Vertical" ><Button Content="打开A" Margin="5" Command="{Binding OpenCommand}" CommandParameter="ViewA"><i:Interaction.Triggers><!--这里必须是Load,否则报错--><i:EventTrigger EventName="Loaded" ><!--ButtonA_Click关联VM中的ButtonA_Click事件--><ei:CallMethodAction MethodName="ButtonA_Click" TargetObject="{Binding}" /></i:EventTrigger></i:Interaction.Triggers></Button></StackPanel></Grid>
</Window>
4.MainWindowViewModel层代码
using Prism.Commands;
using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;namespace WpfApp1
{public class MainWindowViewModel : BindableBase{public DelegateCommand<string> OpenCommand { get; set; }public MainWindowViewModel(){OpenCommand = new DelegateCommand<string>(Open);}private void Open(string obj){MessageBox.Show("Test " + obj);}public void View_Loaded(object sender, EventArgs e){MessageBox.Show("123");}public void ButtonA_Click(object sender, EventArgs e){//这里按照事件理解,e就是参数,也可以删除简写,加上引用Open(((System.Windows.Controls.Primitives.ButtonBase)((RoutedEventArgs)e).Source).CommandParameter.ToString());}}
}
5.当我们运行的时候,先弹View_Loaded里面的内容,再弹ButtonA_Click里面的内容 ,效果。
注意:上面的方法可能出现版本的错误,使用下面方法:
1.建立好项目后,安装Microsoft.xaml.Behaviors
2.View界面代码
<Window x:Class="rwerw.MainWindow1"xmlns=""xmlns:x=""xmlns:d=""xmlns:mc=""xmlns:local="clr-namespace:rwerw" xmlns:behaviour=""mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Grid><Button Content="Button" HorizontalAlignment="Left" Margin="229,218,0,0" VerticalAlignment="Top" Width="75"><behaviour:Interaction.Triggers><behaviour:EventTrigger EventName="Click"><behaviour:CallMethodAction TargetObject="{Binding}" MethodName="Button_Click" /></behaviour:EventTrigger></behaviour:Interaction.Triggers></Button></Grid>
</Window>
3.VM中的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;namespace rwerw.ViewModels
{public class MainViewModel{public void Button_Click(object sender, EventArgs e){MessageBox.Show("123");}}
}
注意点:
1.引用 xmlns:behaviour=""
2.VM中写public, public void Button_Click(object sender, EventArgs e)
3.V和VM之间关联, this.DataContext = new MainViewModel();
来源:在MVVM中加载界面后执行方法或者事件(行为behaviour)-CSDN博客
本文发布于:2024-02-02 07:21:28,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170682968942240.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |