首页 > 解决方案 > 如何在 DataGridTextColumn 的文本单击上执行命令

问题描述

我有一个包含多列的 DataGrid。一列应该用作参考,但现在它的行为就像一个虚拟文本。如何通过使用 MVVM 模式(无事件)单击此文本来执行任何命令?

<DataGridTextColumn
    Binding="{Binding RecipeName}"
    Header="Recipe"
    Width="1.5*"/>

使 A-0603 可点击

标签: wpfmvvmdatagrid

解决方案


一种方法是通过重新定义列的 CellTemplate 来使用单元格中的按钮。

这是一个例子:

<DataGrid ItemsSource="{Binding Items}">
    <DataGrid.Columns>
        <!-- Your first column -->
        <DataGridTemplateColumn Header="Recipe">
            <DataGridTemplateColumn.CellTemplate>
                <!-- Let's redefine the cell template for our column -->
                <ItemContainerTemplate>
                    <Button Content="{Binding RecipeName}" Command="{Binding MyCommand}">
                        <!-- Here we remove the button's default templating by overriding it -->
                        <Button.Template>
                            <ControlTemplate TargetType="Button">
                                <ContentPresenter Content="{TemplateBinding Content}" />
                            </ControlTemplate>
                        </Button.Template>
                    </Button>
                </ItemContainerTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

推荐阅读