RelayCommand CanExecute comportement
J'ai commande suivante:
<Button x:Name="bOpenConnection" Content="Start Production"
Grid.Row="0" Grid.Column="0"
Height="30" Width="120" Margin="10"
HorizontalAlignment="Left" VerticalAlignment="Top"
Command="{Binding Path=StartProductionCommand}"/>
StartProductionCommand = new RelayCommand(OpenConnection, CanStartProduction);
private bool CanStartProduction()
{
return LogContent != null && !_simulationObject.Connected;
}
CanStartProduction
est vérifiée que lorsque je re-taille de l'INTERFACE utilisateur et pas mise à jour à la volée.
Aucune idée de pourquoi il n'est pas mis à jour à chaque fois qu'ils changent les valeurs ?
OriginalL'auteur Night Walker | 2013-02-25
Vous devez vous connecter pour publier un commentaire.
La
CommandManager
a aucun moyen de savoir que la commande dépendLogContent
et_simulationObject.Connected
, donc il ne peut pas réévaluerCanExecute
automatiquement lorsque ces propriétés changent.Vous pouvez demander explicitement une réévaluation en appelant
CommandManager.InvalidateRequerySuggested
. Notez qu'il pourra réévaluerCanExecute
pour tous commandes; si vous voulez vous rafraîchir un seul, vous devez augmenter laCanExecuteChanged
de l'événement sur la commande elle-même en appelantStartProductionCommand.RaiseCanExecuteChanged
.appelez simplement
CommandManager.InvalidateRequerySuggested
lorsque vous souhaitez que leCanExecute
de votre commande pour être réévaluéeOriginalL'auteur Thomas Levesque
Vous pouvez appeler RaiseCanExecuteChanged dans le Par exemple PropertyChanged Gestionnaire d'événements.
Commande les états ne sont pas actualisées très souvent.
Il y a quelque temps j'ai lu un bon article sur le sujet. Je vais poster plus tard.
voir aussi http://joshsmithonwpf.wordpress.com/2008/06/17/allowing-commandmanager-to-query-your-icommand-objects/
voir aussi Actualiser WPF Commande
OriginalL'auteur Boas Enkler