我想恢复此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,因此为空,因此不起作用。我的代码有什么问题,因为它给了我一个空的数据上下文吗?
答案 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/