1

I am new to WPF and I've been searching all over the internet and have not found a solution to my problem. My question is, how do you call a method not in the code behind but from another class using Commands? Am I correct that Commands are the only way to call methods from another class? I know you can simply make an object reference inside the button click, but I don't want to do that due the complexity of my project.

Let's say I want to call the Print function from ClassA using the Command function inside the button in MainWindow.xaml, how can I achieve this?

ViewModel: ClassA.cs

public class ClassA
    {
        Print()
        {
           Console.WriteLine("Hello");
        }
    }

View: MainWindow.xaml

<button Command=? ><button/>
1

1 Answer 1

1

If ClassA is the DataContext of your view you can declare a button like this (assuming you have an ICommand named PrintCommand inside the class):

<Button Content="Print" Command="{Binding PrintCommand}" />

I would recommend this tutorial for MVVM:

http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

Using the RelayCommand class from the tutorial, the relevant part in the ViewModel could look like this:

private RelayCommand printCommand;
public RelayCommand PrintCommand
{
    get { return printCommand?? (printCommand = new RelayCommand(param => ExecutePrintCommand())); }
}

private void ExecutePrintCommand()
{
    // your code here
}
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.