我正在尝试访问绑定DataTemplate
的对象,具体来说我只需要一个int值。我已将DataTemplate中的主Grid与Tap:
<DataTemplate x:Name="joinTemplate">
<Grid Tag="{Binding index}" DataContext="{Binding}" Tap="select_Click" ...>
...
</Grid>
</DataTemplate>
我的处理程序如下:
private void select_Click(object sender, System.Windows.Input.GestureEventArgs e)
问题是我仍然无法访问sender.DataContext
或sender.Tag
。但是,当我在调试器中运行它并通过Watch查看它时,我可以通过简单地扩展“base”两次来获取DataContext
和Tag。这应该意味着我被赋予的对象继承了那些对象并且在某种程度上是原始Grid的子对象,但是,我认为发送者始终是绑定处理程序的Grid
?为了获得我使用的实际元素,我必须使用,对于此示例,e.OriginalSource
,对吧?
答案 0 :(得分:10)
只需将sender
转换为适当的类型即可访问DataContext
属性:
((FrameworkElement)sender).DataContext
然后,同样地,您必须将值绑定到绑定到网格的任何类型。例如,如果您绑定了Model
类型的对象:
var model = (Model)((FrameworkElement)sender).DataContext