Je suis en train de développer ma première application WPF pour l'université en utilisant MVVM. Je n'arrive pas à faire fonctionner cette liaison spécifique, bien que j'aie suivi les étapes utilisées précédemment qui ont été couronnées de succès.
J'ai le snippet xaml suivant :
<Button Command="{Binding GetTicketsCommand}" Canvas.Left="50" Canvas.Top="202" Content="Refresh List" Height="25" Width="137" />
La vue initialise la VM comme telle :
public JobListView()
{
InitializeComponent();
viewModel = new JobListViewModel(this);
this.DataContext = viewModel;
}
Le modèle de vue contient une commande appelée GetTicketsCommand à laquelle le bouton est lié, mais lorsque je clique sur le bouton, les méthodes Execute ou CanExecute de la commande ne sont pas appelées. La commande que j'ai créée est instanciée dans le constructeur de la VM.
Des idées ?
Edit :
La classe de commande est comme ceci :
public class GetTicketsCommand : ICommand
{
private readonly JobListViewModel viewModel;
public GetTicketsCommand(JobListViewModel viewModel)
{
this.viewModel = viewModel;
}
public bool CanExecute(object parameter)
{
return true;
}
public void Execute(object parameter)
{
viewModel.GetTickets();
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
}
Et dans le modèle de vue, je crée simplement une instance de celui-ci dans le constructeur :
public JobListViewModel()
{
GetTicketsCommand = new GetTicketsCommand(this);
dataAccess = new DataLayerClient();
}