Command class not working - ICommand implementation

1 week ago 18
ARTICLE AD BOX

I am working on a WPF project using the MVVM pattern. My project is structured into three separate projects/namespaces to maintain a clean separation of concerns:

Model: Contains the data classes (e.g., class.cs)

ViewModel: Contains the Command implementation and the ViewModels (e.g., VMClass.cs, VMMainWindow.cs).

View (Main Project): The XAML UI that references the ViewModel project.

The Issue:

Even though my DataContext is correctly set in XAML and the bindings don't show any errors in the output, the logic inside my Command is never executed.

My Code Implementation:.

Here is my code:

// Inside ViewModel Project public class Command : ICommand { private Action<object> action; public Command(Action<object> action) { this.action = action; } public bool CanExecute(object parameter) => true; public event EventHandler CanExecuteChanged; public void Execute(object parameter) { // I suspect this is the culprit: if (parameter != null) { action(parameter); } } }

My View Setup (XAML):

I have linked the ViewModels as a namespace and set the DataContext like this:

<Window.DataContext> <vm:VMMainWindow /> </Window.DataContext> <Button Content="Execute" Command="{Binding ButtonCommand}" />

My question:

1. Is it bad practice to have this if (parameter != null) check in a generic Command class?

2. How should I handle cases where no CommandParameter is provided?

Read Entire Article