WPF MVVM утилизирует ViewModel при выгрузке UC - PullRequest
0 голосов
/ 05 октября 2018

Я начинаю создавать приложение WPF с MVVM-Light.Мое приложение имеет верхнюю строку меню и левую строку меню с центральной панелью, на которой отображаются некоторые пользовательские элементы управления с параметрами левого / верхнего меню.Все идет хорошо, но моя модель зрения не убирает / не убирает;когда я выбираю опцию меню из левого или верхнего меню, моя модель просмотра все еще существует, и когда я возвращаюсь в опцию меню, представление не обновляется и не поддерживает значение вставки.

Вот несколько примеров моего кода:

MainViewModel получает сообщение из верхнего / левого меню и показывает UserControl

public class MainViewModel : ViewModelBase
{
       Messenger.Default.Register<NotificationMessage<string>>(this, "My_Token", (message) =>
        {MessageUtility wMesageUtility = new MessageUtility();
            switch (message.Notification)
            {
                case "MyMessage":
                    switch (message.Content)
                    {
                        case "Insert":
                            if (!SimpleIoc.Default.IsRegistered<Insert_ViewModel>())
                            {
                                SimpleIoc.Default.Register<Insert_ViewModel>(true);
                            }

                            wInsertVM = SimpleIoc.Default.GetInstance<Insert_ViewModel>();
                            ShowMainView(null);
                            CurrentViewModel = wInsertVM;
                            break;
                        default:
                            break;
                    }
                    break;
                default:
                    break;
            }
        });

Мой класс ViewModel:

public class Insert_ViewModel : ViewModelBase
{
    public FormInternal_ViewModel()
    {
       ...Some Code with ICommand and private methods
    }
}

Мой XAML-файл:

<UserControl x:Class="MyApp.UC.Insert"
         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:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Platform"
         mc:Ignorable="d" 
         d:DesignHeight="400" d:DesignWidth="700"             
         >
<DockPanel Name="MainDock" LastChildFill="True" DataContext="{Binding Insert, Source={StaticResource Locator}}" 
           VerticalAlignment="Stretch" 
           Height="Auto">

    <Grid>
   </Grid>
 </DockPanel>
</UserControl>

Как я могу расположить Insert_ViewModel, когда выбрано верхнее / левое меню?Спасибо.

...