Caliburn.Micro框架在DataGrid列中添加按钮

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":
img

posted @ 2022-11-17 16:19  修行的蜗牛  阅读(146)  评论(0编辑  收藏  举报