Caliburn.Micro框架在DataGrid列中添加按钮
在使用Caliburn.Micro框架时,想在DataGrid列中添加按钮,走了很多弯路,记录一下。
前端代码
<DataGrid>
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
<TextBlock Text="操作" Width="80" VerticalAlignment="Center" Block.TextAlignment="Center"/>
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="修改" Background="Cyan"
cal:Action.TargetWithoutContext="{Binding Path=DataContext, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}"
cal:Message.Attach="[Event Click]=[Action Modify($this)];"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid>
后端代码
public void Modify(object sender)
{
//To do Something
}
Object类型参数sender为cal:Message.Attach="[Event Click]=[Action Modify($this)];"中的"$this",为当前行的数据。
关键点
如果没有cal:Action.TargetWithoutContext="{Binding Path=DataContext, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}" 这句时
点击按钮时会报错"No Target found for method Modify":