web-dev-qa-db-fra.com

Comment commencer à utiliser MVVMlight sur une application .NET CORE 3 WPF?

Pour un nouveau projet, je souhaite essayer le nouveau projet .NET CORE 3.0 WPF et je souhaite l'utiliser en combinaison avec MVVMlight. Cependant, dans le noyau .NET et en combinaison avec le code Visual Studio, vous n'obtenez pas d'échafaudage ni de projet par défaut. Et puis il y a le mystère que faire pour le faire fonctionner ...

Je sais que j'ai besoin de faire quelque chose dans App.xaml.cs, Mainwindow.xaml et Mainwindow.xaml.cs. En plus de créer un service de vueModellocator. Mais la documentation de MVVMLight est un peu vide à ce sujet.

J'avais trouvé la question suivante sur SO ( MVVMLightLibsSTD10 et UWP ), mais ce n'est pas complet dans mon cas et je ne suis pas sûr que je devrais utiliser la normale paquet ou la version spéciale STD10.

Mise à jour 2019-06-26 Je l'ai eu pour travailler avec le code suivant, à l'aide de MVVMLighLibSstD10 Version 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>();
    }
}
6
Paalders

Qu'est-ce que vous voulez dire exactement par 'ce n'est pas complet dans mon cas'? Avez-vous des erreurs lorsque vous construisez le projet?

J'utilise aussi mvvmlight dans mes projets. Par exemple:

En app.xaml

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

Dans mainwindow.xaml

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

Dans ViewModellocator.cs

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

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

Cela devrait faire le tour ... mais comme mentionné ci-dessus, il serait intéressant de savoir si vous obtenez des erreurs.

2
Doern

Beaucoup de choses se sont produites dans les 1,5 ans que vous posez cette question. Microsoft prend maintenant en charge un remplacement pour MVVMlight. Avez-vous entendu parler de Microsoft.Toolkit.mvvm? S'il vous plaît voir: https://github.com/windows-toolkit/mvvm-semples Il est censé être plus compatible avec le noyau .NET. Opps, j'ai oublié qu'il est maintenant juste .NET (pour Rev5 et plus)

2
MichaelInMA