C# 带按钮列的WPF MVVM网格

C# 带按钮列的WPF MVVM网格,c#,wpf,mvvm,C#,Wpf,Mvvm,我遵循MVVM模式。我有一个网格,有几列,其中一列有按钮。单击按钮我想打开一个对话框,该对话框将显示与单击按钮所在的特定行相关的数据。但问题在于绑定,因为我无法用viewmodel绑定控件 <Button Command="{Binding Path=ParentRow.DataContext, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, UpdateSourc

我遵循MVVM模式。我有一个网格,有几列,其中一列有按钮。单击按钮我想打开一个对话框,该对话框将显示与单击按钮所在的特定行相关的数据。但问题在于绑定,因为我无法用viewmodel绑定控件

<Button  Command="{Binding Path=ParentRow.DataContext, 
         RelativeSource={RelativeSource AncestorType={x:Type UserControl}},
         UpdateSourceTrigger=PropertyChanged, Mode=Default}" 
         lib:Event.Binding="Click.[**NameOfViewModelMethod**]" >                                      
</Button>  

首先,如果按钮位于定义了DataContext的网格内,则不需要设置路径,如Path=ParentRow.DataContext

您的命令绑定应如下所示:

<Button Command="{Binding YourVMICommand"} /> 

您必须在VM中定义一个公共ICommand,然后将其绑定到按钮。

您不会显示所有代码和上下文,但它应该是这样工作的 我假设您在一个usercontrol caling父数据上下文中。。。 listview示例:

<ListView   ItemsSource="{Binding listFromDataContext, IsAsync=True}" Margin="3,51,0,10"    >

<ListView.ItemTemplate >
<DataTemplate>
<grid>
 <Button   Command="{Binding DataContext.MyMethode, RelativeSource={RelativeSource AncestorType={x:Type controls:thisUserControl}}}" CommandParameter="{Binding}"   />
</grid>
</DataTemplate>
  </ListView.ItemTemplate >
</ListView>
然后在模型中

      private ICommand _MyMethode;
            public ICommand MyMethode
            {
                get
                {
                    return _MyMethode ?? (_MyMethode = new CommandHandler<MyModel.item>(x => showMessage(x), _canExecute));
                }
            }

public void showMessage(MyModel.item x)
{
MessageBox.Show(x.Info);
}

嗨,Zwan。。谢谢你的回复。。。如果您能提供更多的代码,那就太好了。