从Tap事件中获取绑定对象

时间:2013-07-26 21:17:23

标签: c# xaml windows-phone-8

我正在尝试访问绑定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.DataContextsender.Tag。但是,当我在调试器中运行它并通过Watch查看它时,我可以通过简单地扩展“base”两次来获取DataContext和Tag。这应该意味着我被赋予的对象继承了那些对象并且在某种程度上是原始Grid的子对象,但是,我认为发送者始终是绑定处理程序的Grid?为了获得我使用的实际元素,我必须使用,对于此示例,e.OriginalSource,对吧?

1 个答案:

答案 0 :(得分:10)

只需将sender转换为适当的类型即可访问DataContext属性:

((FrameworkElement)sender).DataContext

然后,同样地,您必须将值绑定到绑定到网格的任何类型。例如,如果您绑定了Model类型的对象:

var model = (Model)((FrameworkElement)sender).DataContext