J'ai un contrôle de l'utilisateur en wpf. Et je veux utiliser ce contrôle utilisateur deux fois dans la même vue. J'utilise l'approche MVVM. Quelqu'un peut-il me donner une bonne suggestion que quelle approche je devrais suivre.même contrôle de deux utilisateurs en xaml
0
A
Répondre
1
Euh, une raison pour laquelle vous ne l'utilisez pas deux fois? Si vous liez à la machine virtuelle (en tant que DataContext) avec les mêmes propriétés, cela ne fonctionnera pas autrement que de lier deux TextBlocks (ou un autre contrôle "normal") à la même propriété dans la machine virtuelle.
Ici j'utilise le même contrôle dans la même fenêtre, mais il pourrait tout aussi bien être utilisé dans le même UserControl, DataTemplate, etc. - tout ce que vous définissez comme une "vue".
XAML
<Window x:Class="MyNamespace.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyNamespace"
Title="My Window" Width="300" Height="300">
<StackPanel>
<local:MyUserControl x:Name="control1"
SomeProperty="{Binding MyMVVMProperty}" />
<local:MyUserControl x:Name="control2"
SomeProperty="{Binding MyMVVMProperty}" />
<TextBlock x:Name="txt1"
Text="{Binding AnotherMVVMProperty}" />
<TextBlock x:Name="txt2"
Text="{Binding AnotherMVVMProperty}" />
<TextBlock x:Name="txt3"
Text="{Binding AThirdMVVMProperty}" />
</StackPanel>
</Window>
code Derrière
class Window1 : Window
{
MyViewModel mViewModel = new MyViewModel();
public Window1()
{
this.DataContext = mViewModel;
}
}
Questions connexes
- 1. Appliquer le modèle de contrôle en XAML
- 2. Requête SQL à afficher si deux utilisateurs du même groupe
- 3. Comment lier des chaînes de ressources en XAML à plusieurs attributs dans le même contrôle?
- 4. Convertir WPF (XAML) contrôle en document XPS
- 5. Référencer un type de base modèle de contrôle en XAML
- 6. Chargement de XAML au contrôle de grille
- 7. WPF: Accès à deux DataContexts dans le même contrôle
- 8. Deux vues du même ViewModel dans un contrôle utilisateur
- 9. Contrôle de plusieurs formulaires en même temps
- 10. WPF DATAGRID - Comment lier deux champs de tables en xaml
- 11. Données de contrôle utilisateur Silverlight 3 Liaison en xaml
- 12. Accès XAML contrôle dans WPF
- 13. commande wpf liaison de contrôle personnalisé xaml
- 14. Websocket session entre deux utilisateurs
- 15. en utilisant le même contrôle ascx deux fois lors de l'utilisation Register (ASP.NET)
- 16. En utilisant deux contrôles utilisateur sur la même page?
- 17. Utilisateurs de bases de données payées et utilisateurs d'essai dans la même table
- 18. comment afficher deux dialogues en même temps?
- 19. Deux publications asynchrones en même temps?
- 20. Comparaison de deux schémas Oracle, d'autres utilisateurs
- 21. comment utiliser deux fonction en même temps?
- 22. en ajoutant deux fois le même objet
- 23. C: Exécuter deux fonctions en même temps?
- 24. contrôle de version des métadonnées des utilisateurs
- 25. Table des utilisateurs - une table ou deux?
- 26. Contrôle XAML pour hériter des modèles
- 27. contrôle de référence XAML et propriétés dans x: Array
- 28. Différents utilisateurs obtiennent le même cookie - valeur en .ASPXANONYMOUS
- 29. utilisateur contrôle de haut niveau défini dans XAML
- 30. Comment puis-je afficher le même contrôle DataPager à deux endroits sur une page en même temps?
Mais ..le problème est ... Lets pense que mon contrôle utilisateur est une grille. quand je sélectionne un article dans un contrôle d'utilisateur ... le même article sera sélectionné dans l'autre. – Relativity
Exactement. C'est ce que MVVM est. Si vous utilisez le même contrôle avec les mêmes propriétés, la même chose devrait se produire dans les deux cas. Si vous utilisez le même contrôle mais changez une propriété différente, quelque chose de différent devrait se produire. J'ai mis à jour ma réponse ci-dessus - j'ai ajouté un troisième TextBlock. txt1 et txt2 se lient à la même propriété, donc si AnotherMVVMProperty change, les deux devraient refléter cela. Toutefois, txt3 (qui est également une instance d'un contrôle TextBlock) se lie à une valeur complètement différente et ne sera pas affectée par une modification du paramètre AnotherMVVMProperty. –
Une autre façon de le regarder est la suivante: vous pouvez placer deux ListBox sur une vue et les lier à votre ViewModel. S'ils se lient tous les deux à la même propriété de collection dans votre machine virtuelle, ils seront identiques; s'ils se lient à des propriétés différentes, ils seront différents. Un UserControl n'est pas différent de tout autre contrôle s'il utilise des liaisons et non des valeurs codées en dur. –