VM代码,有一个Btn_Open事件
public partial class DemoViewModel : ViewModelBase
{
[RelayCommand]
public async Task Btn_Open(object?user)
{
}
}
axmal前端代码
<DataGridTemplateColumn x:DataType="models:DemoModel" Header="操作">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate x:DataType="models:DemoModel">
<Border>
<Button
HorizontalAlignment="Left"
Height="36"
Margin="0 0 0 8"
DataContext="{Binding $parent[UserControl].DataContext}"
x:DataType="vm:DemoViewModel"
Command="{Binding Btn_Open}"
CommandParameter="{Binding $parent.DataContext}"
Content="打开">
</Button>
</Border>
</DataTemplate >
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
原理为 给DataTemplate中的按钮加上一层父级(携带有Model的DataContent对象绑定),然后我们给Button的DataContent绑定为UserControl的DataContent,此时再去绑定Command,即为绑定的UserControl的DataContent了