I\'m new to WPF, working on my first project. I\'ve been stuck in this problem for a week so I\'m trying to find some help here.
I have a FlowDocumentReader inside m
After loading your FlowDocument
you can enumerate all UIElements using LogicalTreeHelper
. It will allow you to find all hyperlinks. Then you can simply subscribe to their MouseEnter
event. Here is a code:
void SubscribeToAllHyperlinks(object sender, RoutedEventArgs e)
{
var hyperlinks = GetVisuals(this).OfType<Hyperlink>();
foreach (var link in hyperlinks)
link.MouseEnter += Hyperlink_MouseEnter;
}
public static IEnumerable<DependencyObject> GetVisuals(DependencyObject root)
{
foreach (var child in LogicalTreeHelper.GetChildren(root).OfType<DependencyObject>())
{
yield return child;
foreach (var descendants in GetVisuals(child))
yield return descendants;
}
}
private void Hyperlink_MouseEnter(object sender, MouseEventArgs e)
{
// Do whatever you want here
}
I've tested it with following XAML:
<FlowDocumentReader>
<FlowDocument>
<Paragraph>
<Hyperlink>asf</Hyperlink>
</Paragraph>
</FlowDocument>
</FlowDocumentReader>
Take a look at http://xtrememvvm.codeplex.com/
It lets you hook directly into events handlers from loose XAML files.
No docs, but the sample app demos using routed commands and event handlers.