C# 带按钮列的WPF MVVM网格
我遵循MVVM模式。我有一个网格,有几列,其中一列有按钮。单击按钮我想打开一个对话框,该对话框将显示与单击按钮所在的特定行相关的数据。但问题在于绑定,因为我无法用viewmodel绑定控件C# 带按钮列的WPF MVVM网格,c#,wpf,mvvm,C#,Wpf,Mvvm,我遵循MVVM模式。我有一个网格,有几列,其中一列有按钮。单击按钮我想打开一个对话框,该对话框将显示与单击按钮所在的特定行相关的数据。但问题在于绑定,因为我无法用viewmodel绑定控件 <Button Command="{Binding Path=ParentRow.DataContext, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, UpdateSourc
<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。。谢谢你的回复。。。如果您能提供更多的代码,那就太好了。