J'ai implémenté une classe IComand personnalisée pour l'un de mes boutons. Le bouton est placé dans une page 'MyPage.xaml' mais sa classe ICommand personnalisée est placée dans une autre classe, pas dans le code MyPage derrière. Puis, à partir XAML je veux lier le bouton avec sa classe de commande personnalisée puis je fais:ICommand WPF sur un bouton
MyPage.xaml:
<Page ...>
<Page.CommandBindings>
<CommandBinding Command="RemoveAllCommand"
CanExecute="CanExecute"
Executed="Execute" />
</Page.CommandBindings>
<Page.InputBindings>
<MouseBinding Command="RemoveAllCommand" MouseAction="LeftClick" />
</Page.InputBindings>
<...>
<Button x:Name="MyButton" Command="RemoveAllCommand" .../>
<...>
</Page>
et la classe bouton de commande personnalisé:
// Here I derive from MyPage class because I want to access some objects from
// Execute method
public class RemoveAllCommand : MyPage, ICommand
{
public void Execute(Object parameter)
{
<...>
}
public bool CanExecute(Object parameter)
{
<...>
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
}
Mon problème est comment dire MyPage.xaml que les méthodes Execute et CanExecute pour le bouton est dans une autre classe et non le code derrière lequel est placé le bouton. Comment dire ces méthodes sont dans RemoveAllCommand Class dans la page XAML.
Aussi je veux lancer cette commande quand l'événement de clic de souris est produit dans le bouton ainsi je fais une liaison d'entrée, est-ce correct?
Merci
Hey, je l'ai fait mais sans succès, j'ai reçu une erreur lors de la construction du projet: Impossible de créer une instance de type RemoveAllCommand. Je l'explique dans ma réponse publiée. – toni