如何将用户控件中的item命令绑定到viewmodel命令?

时间:2012-02-01 12:24:43

标签: wpf mvvm user-controls

我有一个UserControl。在我的UserControl中,我有一个按钮,我想将其命令绑定到我的ViewModel命令。我可以这样做吗?

3 个答案:

答案 0 :(得分:1)

是的,您可以向用户控件添加routed event,按下按钮时会调用该控件。

然后,当用户控件事件触发时,您可以使用各种技术来调用视图模型动词。

E.g。您可以使用attached property,或者我建议使用Caliburn.Micro等具有Actions的MVVM框架,使其更加直接。

答案 1 :(得分:0)

我找到了...我可以在我的用户控件中定义DependencyProperty typof RelayCommand并将我的DependencyProperty绑定到我的ViewModel命令

答案 2 :(得分:0)

我不太确定你的意思,但我试了一下。

在您的代码中,定义RoutedCommand

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

然后是xaml,设置命令绑定:

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

然后在后面的代码中添加处理程序:

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

private void ClickExecuted(object sender, ExecutedRoutedEventArgs e)
{
    // TODO execution logic goes here
}
我接近了吗? :)