首页 > 其他分享 >Caliburn.Micro框架在DataGrid列中添加按钮

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

时间:2022-11-17 16:22:29浏览次数:48  
标签:列中 Modify DataGrid Micro 按钮 Caliburn

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

标签:列中,Modify,DataGrid,Micro,按钮,Caliburn
From: https://www.cnblogs.com/slowly-snail/p/16899847.html

相关文章