Wpf MVVM用户控制问题

Wpf MVVM用户控制问题,wpf,binding,Wpf,Binding,我对MVVM应用程序中的命令有一个问题(我只是在学习MVVM,所以要轻松一点) MyClassViewModel设置为MainForm1的datacontext,MyList绑定到UserControl1 datacontext,列表中的每个项都由UserControl2表示。我正在尝试使用以下命令在UserControl2中启动MyCommand: <CheckBox IsChecked="{Binding MyBool}" Command="{Binding Path=MyComma

我对MVVM应用程序中的命令有一个问题(我只是在学习MVVM,所以要轻松一点)

MyClassViewModel设置为MainForm1的datacontext,MyList绑定到UserControl1 datacontext,列表中的每个项都由UserControl2表示。我正在尝试使用以下命令在UserControl2中启动MyCommand:

<CheckBox IsChecked="{Binding MyBool}" Command="{Binding Path=MyCommand}" CommandParameter="{Binding}">
从这个错误中,我知道WPF正在查找绑定到UserControl2的对象中的命令,我真正需要的是在MainForm1 datacontext(MyClassViewModel)中查找命令

有可能像这样冒泡出命令吗?如果有,怎么做


弹出命令是一个很好的解决方案吗?

看起来您的命令是针对UserControl2的。因此,您必须将ICommand添加到MyObject(如您所说,它绑定到UserControl2),或者更改绑定。
WPF抛出绑定错误是有道理的,因为UserControl2有一个DataContext“MyObject”,所以它不知道MyClassViewModel中指定的MyCommand

所以我要么扩展MyObject以包含ICommand
或者将绑定更改为以下内容:

<CheckBox IsChecked="{Binding MyBool}" 
          Command="{Binding RelativeSource={RelativeSource FindAncestor, 
                    AncestorType={MainForm1}}, Path=DataContext.MyCommand}" 
          CommandParameter="{Binding}">

无法确定
DataContext.MyCommand
,可能是您可以直接使用
MyCommand


希望这有帮助

看起来您的命令是针对UserControl2的。因此,您必须将ICommand添加到MyObject(如您所说,它绑定到UserControl2),或者更改绑定。
WPF抛出绑定错误是有道理的,因为UserControl2有一个DataContext“MyObject”,所以它不知道MyClassViewModel中指定的MyCommand

所以我要么扩展MyObject以包含ICommand
或者将绑定更改为以下内容:

<CheckBox IsChecked="{Binding MyBool}" 
          Command="{Binding RelativeSource={RelativeSource FindAncestor, 
                    AncestorType={MainForm1}}, Path=DataContext.MyCommand}" 
          CommandParameter="{Binding}">

无法确定
DataContext.MyCommand
,可能是您可以直接使用
MyCommand


希望这有帮助

这听起来可能是同一个问题:这听起来可能是同一个问题: