Paramètres de commande multiples
Comment puis-je envoyer plusieurs paramètres à partir de Button
dans WPF
? Je suis en mesure d'envoyer un seul paramètre qui est la valeur de TextBox
correctement. Voici le code.
XAML
<TextBox Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="133,22,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" />
<Button Content="Button" Grid.Row="1" Height="23" Command="{Binding Path=CommandClick}" CommandParameter="{Binding Text,ElementName=textBox1}" HorizontalAlignment="Left" Margin="133,62,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
Code behind
public ICommand CommandClick { get; set; }
this.CommandClick = new DelegateCommand<object>(AddAccount);
private void AddAccount(object obj)
{
//custom logic
}
source d'informationauteur Mandar Jogalekar
Vous devez vous connecter pour publier un commentaire.
Vous pouvez envoyer un seul paramètre que l'
CommandParameter
.Une meilleure solution consiste généralement à juste lier la
TextBox
et d'autres contrôles à plusieurs propriétés dans votre ViewModel. La commande serait alors avoir accès à l'ensemble de ces propriétés (puisque c'est dans la même classe), sans avoir besoin d'un paramètre de commande.Autres que l'utilisation de l'approche de la définition de propriétés dans vous classe (appelons votre ViewModel) pour être appliqué par votre point de vue, il y a des fois (pas commune) où nous n'avons pas wan pas à le faire, un outil important à savoir dans ces situations est la MultiBinding, donc, juste par souci d'exhaustivité , même si vous êtes satisfait avec la première option, je vais couvrir une autre approche.
donc, pour répondre à votre question:
1. MVVM Approche :
Utiliser le MVVM approche et de définir des propriétés pour reliée à votre point de vue, et d'utiliser ces propriétés dans votre ViewModel de la commande sans la nécessité pour CommandParameters.
2. MultiBinding : (Peut vivre heureux avec MVVM approche)
En passant le Paramètre de Commande Multi Lié paramètre comme on le voit ici:
Avec votre Convertisseur Définie à l'aide de la
IMultiValueConverter
Interface:et pour extraire les valeurs:
Consultez simplement le paramètre de votre commande comme
Object[]
et utiliser les paramètres dans le même ordre que dans le MultiBinding.