Bonjour bonne journée Je ne suis que neuf avec le modèle de design WPF et MVVM et j'ai beaucoup appris des blogs et des vidéos de Sir Brian Lagunas à Prism .. mais je veux juste demander une question noob..qui Mon code informatique fonctionne pour moi ... Toute aide est très appréciée merci. Voici mon code:
mon modèle de vue strong> p> myModel strong> p> déclarée à une autre Fichier de classe p> <Window x:Class="Prism6Test.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:myVM="clr-namespace:Prism6Test.ViewModel"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<myVM:Person x:Key="mainVM"/>
</Window.Resources>
<Grid DataContext="{StaticResource mainVM}">
<TextBox HorizontalAlignment="Left" Height="23" Margin="217,103,0,0" TextWrapping="Wrap" Text="{Binding MyPerson.FirstName,UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top" Width="120"/>
<TextBox HorizontalAlignment="Left" Height="23" Margin="217,131,0,0" TextWrapping="Wrap" Text="{Binding MyPerson.Lastname,UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top" Width="120"/>
<Button Content="Button" Command="{Binding updateCommand}" HorizontalAlignment="Left" Margin="242,159,0,0" VerticalAlignment="Top" Width="75"/>
</Grid>
</Window>
3 Réponses :
1) Vous ne pouvez pas utiliser de datamodel complexe comme si vous le souhaitez, essayez donc
public Person() { MyPerson = new myPErson(); updateCommand = new DelegateCommand(Execute, CanExecute); }
@Neil marque cette réponse comme solution s'il vous plaît, s'il vous a aidé
D'abord, je dois dire quelque chose à propos de votre nommée. Nommez vos classes claires. Appelez votre Maintenant à votre code fort>. Je ne sais rien de Je veux d'abord changer le modèle strong> the personviewModel code> ou juste
viewModel code> Lorsque votre application n'est pas si gros et non
personne code>, car
personne code> est évidemment le
myPerson code> est un très mauvais nom, car il est très similaire à votre autre personne code> personne code> et que vous devriez Pascalcase tes noms de classe.
prisme code> alors mon code dépend du modèle
MVVM code> uniquement sans le support des bibliothèques de prisme. P>
personne code>. La classe semble très facile dans mon code (utilise simplement les propriétés de l'automobile): p>
personviewmodel code> est une petit titre plus complexe car il implémente le
INOTIFYPROPERTYCHANGED code> interface. J'utilise également le très commun RelaisCommand que vous pouvez trouver dans le lien sous la réponse acceptée. P>
<Window ...>
<Window.Resources>
<wpfTesst:PersonViewModel x:Key="ViewModel" />
</Window.Resources>
<Grid DataContext="{StaticResource ViewModel}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBox Grid.Row="0" TextWrapping="Wrap" Text="{Binding Person.FirstName, UpdateSourceTrigger=PropertyChanged}" />
<TextBox Grid.Row="1" TextWrapping="Wrap" Text="{Binding Person.LastName, UpdateSourceTrigger=PropertyChanged}" />
<Button Grid.Row="2" Content="Button" Command="{Binding UpdateCommand}" CommandParameter="{Binding Person}"/>
</Grid>
</Window>
Merci pour votre suggestion Sir @Jens Horstmann..et ça va m'aider à améliorer mon codage..out de la curiosité Je veux juste utiliser la bibliothèque de prisme et que j'étudie. Puis-je vous demander un lien, réserver pour ma référence monsieur? pour une étude future..plusez s'il vous plaît ... merci beaucoup
@Neil Faites ce que vous voulez avec vos liens = p
HAHA
Voir le code XAML
xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms" prism:ViewModelLocator.AutowireViewModel="True"
Quel est le bouton?
Publier une boîte de message "Hola".
D'accord. Maintenant je le vois. Quel est le problème du code? Vous ne voyez pas quelque chose dans les zones de texte?
Il est contraigné à un accessoire de DélégationCommand. et il devrait exécuter la méthode "exécutée". Mais avant d'exécuter le bouton est désactivé jusqu'à ce que les deux boîtes de texte soient remplies THX pour votre commentaire @jenshorstmann
Il est contraigné à un accessoire de DélégationCommand. et il devrait exécuter la méthode "exécuter" .. mais avant d'exécuter le bouton est désactivé jusqu'à ce que les deux boîtes de texte soient remplies ... mais dans mon cas ça ne marche pas .. thx pour votre commentaire @jenshorstmann