Привязать незагруженное событие к команде - WPF - PullRequest
0 голосов
/ 27 февраля 2019

В настоящее время я работаю над приложением WPF на основе MVVM.

Я определил UserControl следующим образом:

        <UserControl x:Class="TestMockUp.Views.DriveStartupViews.VehicleIdentificationViewModel"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
                 xmlns:ViewModels="clr-namespace:TestMockUp.ViewModels.DriveStartupViewModels"
                 mc:Ignorable="d" 
                 d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignInstance ViewModels:VehicleIdentificationViewModel}">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="Unloaded">
                <i:InvokeCommandAction Command="{Binding PageUnloaded}"/>
            </i:EventTrigger>
            <i:EventTrigger EventName="Loaded">
                <i:InvokeCommandAction Command="{Binding PageLoaded}"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>
         ...
    </UserControl>

Я пытаюсь подключить командуна Unloaded-событие UserControl.Мне не интересно, закрывается ли окно или приложение.

Я загружаю UserControl по требованию с DataTemplate в окно.Мне нужно зарегистрироваться, если контроль выгружается.Я могу связать его с обработчиком событий в файле xaml.cs, но мне нужно вызвать команду в моей ViewModel.

Триггер для загруженного события срабатывает, но не для незагруженного события.Я предполагаю, что <i:Interaction.Triggers> уже выгружен до того, как сработает событие, и поэтому его невозможно зарегистрировать никогда.

Я нашел кое-что о AttachedBehaviour, но не могу заставить его работать для Unloaded.

Кто-нибудь знает способ сделать это без получения Nuget-Package или ThirdParty?если я это объявлю) но не команда <i:Interaction.Triggers>

...