代码之家  ›  专栏  ›  技术社区  ›  Burt

MVVM用户控制问题

  •  1
  • Burt  · 技术社区  · 14 年前

    我对MVVM应用程序中的命令有一个问题(我只是在学习MVVM,所以要容易些)。

    Valid XHTML http://www.hughgrice.com/mvvmproblem.png

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

    <CheckBox IsChecked="{Binding MyBool}" Command="{Binding Path=MyCommand}" CommandParameter="{Binding}">
    

    我在输出中得到以下错误:

    System.Windows.Data Error: 39 : BindingExpression path error: 'MyCommand' property not found on 'object' ''MyObject''
    

    从这个错误我知道WPF正在查找绑定到UserControl2的对象中的命令,我真正需要的是它在MainForm1 datacontext(MyClassViewModel)中查找命令。

    有没有可能冒出这样的命令?如果有,怎么做?

    1 回复  |  直到 14 年前
        1
  •  1
  •   RoelF    14 年前

    看起来你的命令是针对UserControl2的。因此,要么您必须将ICommand添加到MyObject(如您所说,它绑定到UserControl2),要么更改绑定。

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

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

    不太清楚 DataContext.MyCommand ,可能是你可以用的 MyCommand

    希望这有帮助!