Как начать использовать MvvmLight в WPF-приложении .net core 3? - PullRequest
0 голосов
/ 25 июня 2019

Для нового проекта я хочу опробовать новый WPF-проект .net core 3.0 и использовать его в сочетании с MvvmLight. Однако в ядре .net и в сочетании с кодом Visual Studio вы не получите никаких строительных лесов или проекта по умолчанию. И тут есть загадка, что нужно сделать, чтобы это заработало ...

Я знаю, что мне нужно что-то сделать в app.xaml.cs, mainwindow.xaml и mainwindow.xaml.cs. А также создание некоторого сервиса ViewModelLocator. Но документация по MvvmLight вроде бы пуста.

Я нашел следующий вопрос по SO ( MvvmLightLibsStd10 и UWP ), но он не завершен в моем случае, и я также не уверен, должен ли я использовать обычный пакет или специальную версию std10.

Обновление 2019-06-26 Я получил его для работы со следующим кодом, используя MvvmLightLibsStd10 версии 5.4.1.1.

App.xaml

    <Application.Resources>
        <ResourceDictionary>
            <vm:ViewModelLocator x:Key="Locator" xmlns:vm="clr-namespace:$AssemblyName$.ViewModel" />
        </ResourceDictionary>
    </Application.Resources>

MainWindow.xaml

        DataContext="{Binding ValidatorListViewModel, Source={StaticResource Locator}}">

ViewModelLocator.cs

using GalaSoft.MvvmLight.Ioc;

namespace $AssemblyName$.ViewModel
{
    public class ViewModelLocator
    {
        public ViewModelLocator()
        {
            SimpleIoc.Default.Register<ValidatorListViewModel>();
        }

        public ValidatorListViewModel ValidatorListViewModel => SimpleIoc.Default.GetInstance<ValidatorListViewModel>();
    }
}

1 Ответ

0 голосов
/ 25 июня 2019

Что именно вы подразумеваете под ', в моем случае оно не завершено '?Вы получаете какие-либо ошибки при создании проекта?

Я использую MvvmLight и в своих проектах.Как пример:

В App.xaml

<ResourceDictionary>
                <vm:ViewModelLocator x:Key="Locator"
                                     d:IsDataSource="True"
                                     xmlns:vm="clr-namespace:$AssemblyName$.ViewModel" />
</ResourceDictionary>

В MainWindow.xaml

DataContext="{Binding Main, Source={StaticResource Locator}}"

В ViewModelLocator.cs

public ViewModelLocator()
{
   ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
   SimpleIoc.Default.Register<MainViewModel>();
}

public MainViewModel Main
{
     get
     {
         return ServiceLocator.Current.GetInstance<MainViewModel>();
     }
}

Этодолжен сделать свое дело ... Но, как уже упоминалось выше, было бы интересно узнать, если вы получите какие-либо ошибки.

...