我正在尝试创建一个datagridHyperlink列,但是我无法获取已单击的My Object的ID。
我试过了:
<DataGridHyperlinkColumn Header="Nom" Width="170"
Binding="{Binding MyObject.Name}" >
<DataGridHyperlinkColumn.ElementStyle>
<Style>
<EventSetter Event="Hyperlink.Click" Handler="Click" />
<Setter Property="Hyperlink.Tag" Value="{Binding MyObject.Id}"/>
</Style>
</DataGridHyperlinkColumn.ElementStyle>
</DataGridHyperlinkColumn >
和我的职能:
private void ClicJoueur(object sender, RoutedEventArgs e)
{
Hyperlink hp = (Hyperlink)e.OriginalSource;
int id = (int)hp.Tag;
}
我的想法是将tag属性设置为我的对象的id,并能够管理事件并知道所单击对象的id。
但它不起作用,也许是因为Tag属性不是依赖属性?获得的标签始终为0.
如何通过更好的解决方案获取对象的真实ID?
谢谢
答案 0 :(得分:1)
无需依赖标记属性,您可以通过 DataContext
发件人对象获取 TextBlock
< / strong>在你的情况下。
private void ClicJoueur(object sender, RoutedEventArgs e)
{
int id = (((TextBlock)sender).DataContext as ClassName).MyObject.Id;
}
*将 ClassName 替换为声明MyObject属性的基础类名。