从Tap事件获取绑定对象
本文关键字:绑定 对象 获取 事件 Tap | 更新日期: 2023-09-27 18:25:17
我正在尝试访问绑定了DataTemplate
的对象,特别是我只需要一个int值。我已经通过Tap:将DataTemplate中的主网格链接到事件处理程序
<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
?为了得到我点击的实际元素,我必须使用e.OriginalSource
,对吧?
只需将sender
强制转换为适当的类型即可访问DataContext
属性:
((FrameworkElement)sender).DataContext
然后,以同样的方式,您必须将值绑定到绑定到网格的任何类型。例如,如果绑定了Model
:类型的对象
var model = (Model)((FrameworkElement)sender).DataContext