gpt4 book ai didi

wpf - 处理加载的松散 Flowdocument 中的所有超链接 MouseEnter 事件

转载 作者:行者123 更新时间:2023-12-02 02:27:12 25 4
gpt4 key购买 nike

我是 WPF 的新手,正在处理我的第一个项目。我被这个问题困了一个星期,所以我想在这里寻求帮助。

我的应用程序中有一个 FlowDocumentReader,它加载了几个 FlowDocuments(独立文件作为松散的 xaml 文件)。

我需要处理加载文档中所有超链接的 MouseEnter 事件,但我无法在 XAML 中设置 MouseEnter="myHandler",因为这些是松散的 XAML 文件。

有什么方法可以解析 de FlowDocument 并在加载时设置处理程序吗?

还有其他解决方案吗?很抱歉新手问题,非常感谢。

最佳答案

加载FlowDocument 后,您可以使用LogicalTreeHelper 枚举所有UIElement。它将允许您找到所有超链接。然后你可以简单地订阅他们的 MouseEnter 事件。这是一个代码:

    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
}

我已经使用以下 XAML 对其进行了测试:

<FlowDocumentReader>
<FlowDocument>
<Paragraph>
<Hyperlink>asf</Hyperlink>
</Paragraph>
</FlowDocument>
</FlowDocumentReader>

关于wpf - 处理加载的松散 Flowdocument 中的所有超链接 MouseEnter 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5465667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com