2010-09-13 6 views
2

J'ai un bouton qui a une propriété de commande. Cependant, je veux que ce bouton soit désactivé (l'utilisateur ne peut pas cliquer dessus) jusqu'à ce qu'un autre bouton ait été cliqué. Par exemple, l'utilisateur ne peut cliquer sur le bouton Enregistrer après le bouton Nouveau a été cliquéComment faire pour désactiver un bouton qui a la propriété de commande dans Silverlight 4

Alors je fais ce qui suit

<telerik:RadButton Content="Save" Height="22" HorizontalAlignment="Right" Margin="0,0,72,25" Name="saveRBtn" VerticalAlignment="Bottom" Width="43" Grid.Column="5" Grid.Row="4" 
         IsEnabled="False" 
         Command="{Binding Path=LoadCommand, ElementName=documentLineDomainDataSource}" 
         Click="saveRBtn_Click"/> 

Cependant, il semble que que le bouton ne sera pas désactivé avec le réglage IsEnabled = False si j'ai la propriété Command quand je prends la propriété de commande le code, puis le réglage isEnabled = faux belles œuvres

ne sais pas pourquoi le réglage IsEnabled ne fonctionnera pas si les cadeaux de propriété Command.

plz help me

vous remercie

Répondre

4

Un bouton peut fonctionner avec ou sans commande. Vous utilisez l'événement Click et la propriété IsEnabled si vous n'utilisez pas la commande. Ils ont la priorité sur la commande car ils sont plus "directs" (et étaient dans Silverlight avant de supporter la propriété Command).

Normalement, si vous utilisez une commande, vous ne définissez pas IsEnabled et ne gérez pas l'événement Click. Le bouton sera activé si la commande peut être exécutée (propriété CanExecute) et appellera la méthode Execute du bouton.

Pour répondre à votre question, vous devez supprimer le paramètre IsEnabled et le gestionnaire de clic et tout faire via l'objet Command.

1

Voir Code modèle

public const string IsEnabledPropertyName = "IsEnabled"; 

private bool _IsEnabled = false; 

public bool IsEnabled 
{ 
    get 
    { 
     return _IsEnabled; 
    } 

    set 
    { 
     if (_IsEnabled == value) 
     { 
      return; 
     } 

     _IsEnabled = value; 

     // Update bindings, no broadcast 
     RaisePropertyChanged(IsEnabledPropertyName); 
    } 
} 

essayer ce .......

car les boutons propriété IsEnabled devraient être avec une priorité plus élevée que valeur retournée par la méthode CanExecute d'une commande Vous pouvez également examinez ce fil de discussion. Donc actuellement, vous ne pouvez pas utiliser les propriétés IsEnabled et Command, vous devrez utiliser uniquement la méthode CanExecute uniquement pour contrôler l'état du bouton.