【发布时间】:2019-08-10 13:16:43
【问题描述】:
我想恢复这个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 为基础,因此无法正常工作,因为它为空。我的代码有什么问题吗,因为它给了我一个空数据上下文?
【问题讨论】:
-
DataContext的Button应该是该行的集合项。尝试使用来自 vs 的 live tree explorer 检查DataContext是什么 -
为什么需要行(或行索引)?
-
修改该行中的一些数据(与用户无关)
-
显然,行的 DataContext 不是 MyObject 类型。列表项的类型是什么?
-
@UncoProg:您如何设置
Info_DG的ItemsSource属性以及设置什么?您试图在事件处理程序中获得什么值?