Wpf MVVM用户控制问题
我对MVVM应用程序中的命令有一个问题(我只是在学习MVVM,所以要轻松一点) MyClassViewModel设置为MainForm1的datacontext,MyList绑定到UserControl1 datacontext,列表中的每个项都由UserControl2表示。我正在尝试使用以下命令在UserControl2中启动MyCommand: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
<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
希望这有帮助 这听起来可能是同一个问题:这听起来可能是同一个问题: