M.Azad
M.Azad

Reputation: 3763

How to bind an item command in user conrol to viewmodel command?

I have an UserControl. In my UserControl i have a button that I want bind its command to my ViewModel command. Can I do this?

Upvotes: 0

Views: 201

Answers (3)

Mizipzor
Mizipzor

Reputation: 52381

I'm not really sure what you mean but I take a shot.

In your code behind, define a RoutedCommand:

public partial class MyUserControl : UserControl
{
    public static RoutedCommand Click =
        new RoutedCommand("Click", typeof(UserControl));
}

Then it the xaml, set up a command binding:

<UserControl.CommandBindings>
    <CommandBinding 
        Command="{x:Static MyNameSpace:MyUserControl.Click}"
        CanExecute="ClickCanExecute"
        Executed="ClickExecuted"/>
</UserControl.CommandBindings>

Then add the handlers in the code behind:

private void ClickCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
    e.CanExecute = true;
}

private void ClickExecuted(object sender, ExecutedRoutedEventArgs e)
{
    // TODO execution logic goes here
}

Was I close? :)

Upvotes: 0

M.Azad
M.Azad

Reputation: 3763

I found it...I can define a DependensyProperty typof RelayCommand in my usercontrol and bind my DependensyProperty to my ViewModel Command

Upvotes: 0

devdigital
devdigital

Reputation: 34369

Yes, you could add a routed event to your user control which gets invoked when the button is pressed.

You can then use various techniques to invoke the view model verb when the user control event fires.

E.g. you could use an attached property, or I would recommend using an MVVM framework such as Caliburn.Micro which has Actions that makes it even more straightforward.

Upvotes: 1

Related Questions