Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

You should not access your ViewModel directly from the code behind. The purpose of the ViewModel is to separate the UI logic from the business logic, and to allow for easier testing and reusability.

Instead, you should use data binding to communicate between the UI and ViewModel. You can set the DataContext of your View to an instance of your ViewModel, and then use property binding, commands, and other data binding techniques to interact with the ViewModel.

However, if you really need to access your ViewModel from the code behind for some reason, you can cast the DataContext of your View to the type of your ViewModel and use it directly:

var viewModel = (MyViewModel)DataContext;
viewModel.MyProperty = "new value";

Keep in mind that this breaks the separation of concerns and can lead to code that is hard to test and maintain.