大佬教程收集整理的这篇文章主要介绍了WPF MVVM取消Window.Closing事件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
一个解决方案可能是如果我定义一个Application变量,我可以在后面的视图代码中的普通事件处理程序中查询它?@H_673_17@
谢谢@H_673_17@
因此,您可以在xaml中将关闭事件连接到Vm.@H_673_17@
<Window ... xmlns:i="http://scheR_794_11845@as.microsoft.com/expression/2010/interactivity" xmlns:command="http://www.galasoft.ch/mvvmlight"> <i:Interaction.triggers> <i:Eventtrigger EventName="Closing"> <command:EventToCommand Command="{Binding ClosingCommanD}" PassEventArgsToCommand="True" /> </i:Eventtrigger> </i:Interaction.triggers>
在VM中:@H_673_17@
public RelayCommand<CancelEventArgs> ClosingCommand { get; private set; } ctor() { ClosingCommand = new RelayCommand<CancelEventArgs>(args => args.Cancel = truE); }
如果您不想将CancelEventArgs传递给VM:@H_673_17@
您可以始终使用类似的方法使用行为,并使用VM中的简单bool(将此bool绑定到行为)以指示应取消关闭事件.@H_673_17@
更新:@H_673_17@
Download Link for following example@H_673_17@
要使用行为执行此操作,您可以使用以下行为:@H_673_17@
internal class CancelCloseWindowBehavior : Behavior<Window> { public static readonly DependencyProperty CancelCloseProperty = DependencyProperty.Register("CancelClose",typeof(bool),typeof(CancelCloseWindowBehavior),new FrameworkPropertyMetadata(false)); public bool CancelClose { get { return (bool) GetValue(CancelCloseProperty); } set { SETVALue(CancelCloseProperty,value); } } protected override void OnAttached() { AssociatedObject.Closing += (sender,args) => args.Cancel = CancelClose; } }
现在在xaml:@H_673_17@
<i:Interaction.behaviors> <local:CancelCloseWindowBehavior CancelClose="{Binding CancelClosE}" /> </i:Interaction.behaviors>
其中CancelClose是来自VM的bool属性,指示是否应取消Closing事件.在附带的示例中,我有一个Button可以从VM切换此bool,以便您测试行为@H_673_17@
以上是大佬教程为你收集整理的WPF MVVM取消Window.Closing事件全部内容,希望文章能够帮你解决WPF MVVM取消Window.Closing事件所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。