我在WPF应用程序中使用MVVM Light并尝试将Window Closing event
与ViewModel
中实现的命令绑定。
但是当我在XAML中执行它时,事件处理程序被随机调用,在启动应用程序之后它通常会被触发,但是在应用程序运行20或30分钟后,应用程序立即关闭而不会触发“关闭”处理程序。
<Window
[...]
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:command="http://www.galasoft.ch/mvvmlight"
[...]
>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Closing">
<command:EventToCommand Command="{Binding Source={StaticResource Locator},
Path=Main.ExitAppCmd,
Mode=OneWay}"
PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Window>
该命令在MainViewModel
中声明为:
public RelayCommand<CancelEventArgs> ExitAppCmd { get; private set; }
并通过以下方式设置为事件处理程序:
ExitAppCmd = new RelayCommand<CancelEventArgs>((args) => ExitAppHandler(args));
当应用关闭时,没有例外。 我试图在事件处理程序上设置断点,但是在应用程序立即关闭的情况下,断点不会被执行。
当我在代码中绑定相同的处理程序时,处理程序总是被触发。
private void Window_Closing(object sender, CancelEventArgs e)
{
var model = DataContext as MainViewModel;
model.ExitAppHandler(e);
}
如何调试XAML绑定的错误?