【问题标题】:WPF MVVM : Not able to bind child views control property from main viewWPF MVVM:无法从主视图绑定子视图控件属性
【发布时间】:2012-04-27 08:41:03
【问题描述】:

这里我有一个名为“ChildView”的 UserControl,它有一个名为“listView”的 ListView 控件。 我正在尝试将此 listView 的“SelectedItems”属性绑定为我的主窗口中的命令参数,但没有发生。 执行函数参数始终为空。

下面是代码sn-p。

ChildView 

<UserControl x:Class="MyProj.Views.ChildView"
…………..
    <ListView x:Name="listView" …………..


MainView

…………..
<views:ChildView   x:Name="childView" />
…………..
<Button Command="{Binding ElementName=childView, Path=DataContext.CmdCopyLines}" CommandParameter="{Binding ElementName=childView, Path=DataContext.listView.SelectedItems}" Label="Copy" />
…………..

但它是直接从子视图发生的

ChildView 

<UserControl x:Class="MyProj.Views.ChildView"
…………..
    <ListView x:Name="listView" 
…………..
<Button Command="{Binding CmdCopyLines}" CommandParameter="{Binding ElementName=listView, Path=SelectedItems}" Label="Copy" />
…………..

任何帮助将不胜感激

【问题讨论】:

  • 在您的 ChildView 用户控件上,您是将其 DataContext 设置为您的 ViewModel,然后在您的 ViewModel 中创建命令,还是在您将其设置为 DataContext 之前完全构造和初始化 ViewModel?
  • 嗨,Dean,我的子 ViewModel 在我将其设置为 DataContext 之前已完全构造和初始化(命令也是)。从 App 创建 MainWindow ViewModel 对象,从 MainWindow ViewModel 的构造函数创建子 ViewModel 对象,最后我为 MainWindow 及其子 View 设置 Data DataContext。

标签: wpf mvvm


【解决方案1】:

Path=DataContext.listView.SelectedItems 在您的情况下不正确,因为您的 datacontext 是您的 childviewmodel

为你的childviewmodel添加一个Property并将它绑定到你的selectedItems,然后你可以这样做:

<Button Command="{Binding ElementName=childView, Path=DataContext.CmdCopyLines}"
        CommandParameter="{Binding ElementName=childView, Path=DataContext.MySelectedItems}" Label="Copy" />

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-02
  • 2017-06-05
  • 1970-01-01
  • 2013-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多