MVVM Light EventToCommand并不总是被触发

时间:2018-05-09 14:00:41

标签: c# wpf mvvm binding mvvm-light

我在WPF应用程序中使用MVVM Light并尝试将Window Closing eventViewModel中实现的命令绑定。 但是当我在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绑定的错误?

0 个答案:

没有答案