J'utilise le modèle MVVM. J'ai unTextBox et Button - Liaison et commande
- zone de texte dont la propriété Text est lié à de ViewModel (VM prend en charge INotifyProperyChange) propriété Text
- Bouton dont la commande est liée au type de propriété ICommand de VM
Vous pouvez penser à cela comme Un SearchTextBox et SearchButton
Le problème auquel je suis confronté est que lorsque je saisis le texte dans SearchTextBox et que je clique sur SearchButton, seule l'implémentation de la propriété set
liée à SearchTextBox est appelée, mais la Command
pour un clic SearchButton n'exécute (Note: ICommand CanExecute handler
retourne toujours vrai)
Il fonctionne très bien si je soit onglet sur SearchTextBox en utilisant la touche TAB ou utilisez la souris pour se déplacer loin de se concentrer SearchTextBox puis cliquez sur le SearchButton. Cela signifie faire deux actions séparées pour déclencher les deux événements séparément. Idéalement, un clic sur le bouton SearchButton devrait entraîner la mise au point libre de SearchTextBox, appelant ainsi la propriété Set
et le clic sur le bouton Rechercher se traduit par l'exécution de la commande.
est comme ci-dessous
XAML:
<TextBox Text="{Binding Path=SearchText,Mode=TwoWay}"/>
<Button Content="Search" Width="100" Command="{Binding MySearchCommand}"/>
C#:
public String _SearchText;
public String SearchText
{
get { return _SearchText; }
set
{
_SearchText = value;
OnPropertyChanged("SearchText");
}
}
ICommand
mise en œuvre est un implemenetation standard avec pas de code de fantaisie et CanExecute
gestionnaire retourne toujours vrai
comment voulez-vous que votre commande n'exécute pas lorsque votre CanExecute fonctionne? Pouvez-vous poster l'implémentation ici? (Votre méthode Execute) – Amsakanna
Je pense que l'octet signifiait que CanExecute n'était pas en cours d'exécution, mais est défini pour renvoyer toujours vrai. –
Il doit simplement y avoir une erreur stupide, s'il vous plaît poster votre code :) –