首先 -这个问题正是我想要实现的,但没有运行时的开销Hyperlink
。
有没有办法捕捉更高级别的Click
事件Hyperlink
(例如 in Window
)?
PreviewMouseDown
事件给了我定位(通过或)的Run
元素,而不是它本身。Hyperlink
e.Source
e.OriginalSource
Hyperlink
首先 -这个问题正是我想要实现的,但没有运行时的开销Hyperlink
。
有没有办法捕捉更高级别的Click
事件Hyperlink
(例如 in Window
)?
PreviewMouseDown
事件给了我定位(通过或)的Run
元素,而不是它本身。Hyperlink
e.Source
e.OriginalSource
Hyperlink
我认为这是您可以在 PreviewMouseDown 事件处理程序中执行的操作:
private void Window_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
Run r = e.OriginalSource as Run;
if(r != null)
{
Hyperlink hyperlink = r.Parent as Hyperlink;
if(hyperlink != null)
{
//Your code here
}
}
}
}
或者,如果您希望将所有超链接点击重定向到 ViewModel 中的相同命令处理程序,您可以添加样式来执行此操作,如下所示:
<Style TargetType="{x:Type Hyperlink}">
<Setter Property="Command" Value="{Binding MyCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"/>
<Setter Property="CommandParameter" Value="{Binding}"/>
</Style>
谢谢