在WPF的DataGrid列中获取button_click事件的行

时间:2019-03-19 22:09:56

标签: c# xml wpf

我想恢复此thread。我也有同样的情况,但是任何解决方案都对我有用。 我有以下xml,因为您可以与一个询问类似:

  <DataGrid Grid.Column="1" Name="Info_DG" FontSize="18" CellEditEnding="Info_DG_CellEditEnding" >
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding BM}"/>
                <DataGridTextColumn Binding="{Binding BC}"/>
                <DataGridTemplateColumn>                        
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button Click="Button_Click"></Button>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>

我的目标与thread相同:获取所按下按钮的行号,但是列出的任何解决方案都对我有用。

以下两种解决方案均不起作用,在我的情况下,DataContext和ID均为空:

MyObject obj = ((FrameworkElement)sender).DataContext as MyObject;


object ID = ((Button)sender).CommandParameter;

其他答案也基于DataContext,因此为空,因此不起作用。我的代码有什么问题,因为它给了我一个空的数据上下文吗?

1 个答案:

答案 0 :(得分:0)

我认为您缺少ItemSource吗?

<DataGrid ItemSource="{Binding YourItemSource}" Grid.Column="1" Name="Info_DG" FontSize="18" CellEditEnding="Info_DG_CellEditEnding" >
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding BM}"/>
            <DataGridTextColumn Binding="{Binding BC}"/>
            <DataGridTemplateColumn>                        
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Button Click="Button_Click"></Button>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

对于您的数据上下文问题,最好先了解什么是数据上下文,请阅读以下链接。下面的帖子以最简单的方式说明了如何分配步骤1中的数据上下文。但是,您应始终将数据上下文链接到视图模型(步骤2)。

https://www.wpf-tutorial.com/data-binding/using-the-datacontext/