2009-05-22 102 views
0

我有一个WPF Hyperlink,我可以点击并获得其NavigateUri属性就好了。但是,我希望能够将一些附加信息与Hyperlink捆绑在一起,以便我可以在我的事件处理程序中处理它。这是它的外观现在:WPF超链接子

<TextBlock Grid.Row="0"> 
    <Hyperlink ToolTip="{Binding Path=Contact.ToolTipPersonalEmail}" 
      Name="ContactHyperlink" Foreground="#FF333333" 
      RequestNavigate="HandleContactEmailClicked" 
      NavigateUri="{Binding Path=Contact.Email}" 
      > 
     <TextBlock Text="{Binding Path=Contact.Fullname}" Width="Auto" 
      HorizontalAlignment="Stretch" 
      TextTrimming="CharacterEllipsis"/> 
     <TextBlock Text="{Binding Path=Data1}" Name="data1" Visibility="Collapsed" /> 
     <TextBlock Text="{Binding Path=Data2}" Name="data2" Visibility="Collapsed" /> 
    </Hyperlink> 

</TextBlock> 

基本上,在我的事件处理程序,我希望能够访问具有知名度=“折叠”(数据1和数据2)两个的TextBlocks里面的数据。我将它比作HTML表单中的“隐藏”数据。

我试着与Hyperlink的“Inline”属性混淆,但这不起作用,并且由于这是在DataTemplate中,所以我无法在代码中按名称访问data1和data2。

任何想法?

谢谢。

回答

2

在事件处理程序,你可以做这样的事情:

ContentPresenter presenter = (ContentPresenter)sender.TemplatedParent; 
DataTemplate template = presenter.ContentTemplate; 
TextBlock textBlock = (TextBlock)template.FindName("data1", presenter); 

也许不是最漂亮的方式,但它为我工作。

+0

适合我。谢谢! – Max 2009-05-22 18:23:07

3

创建文本块来保存该数据有点......过度杀伤。我会用这两个选项中的一个去:

  1. 使用数据绑定到特定 对象放入超链接,然后 拿回来,所有你需要做的,是 访问的DataContext的 超链接,它会为您提供 持有data1和 数据2
  2. 附上一份 填充数据1和数据2到 超链接的标记属性对象的类
+0

谢谢斯蒂芬。我想我明白你的意思。我也会尝试DataContext方法,看看它是如何工作的,因为它看起来更优雅。 – Max 2009-05-22 18:25:22