我有一个RichTextBlockHyperlink

单击超链接时,我想从ViewModel执行Command,因此我使用了Microsoft.Xaml.Behaviors中的Interaction Behavior

<RichTextBlock>
    <Paragraph>
        <Hyperlink>
            <interactivity:Interaction.Behaviors>
                <core:EventTriggerBehavior EventName="Click">
                    <core:InvokeCommandAction
                        Command="{Binding ShowDocumentCommand}" />
                </core:EventTriggerBehavior>
            </interactivity:Interaction.Behaviors>
            <Hyperlink.Inlines>
                <Run Text="Some link" />
            </Hyperlink.Inlines>
        </Hyperlink>
    </Paragraph>
</RichTextBlock>


但这是行不通的。它运行,但是什么也没发生。单击Hyperlink时不执行该命令。

为什么?
我应该怎么做才能使其执行命令?

最佳答案

行为似乎只能附加到从FrameworkElement派生的类上。但是Hyperlink不会从中继承。

您可以简单地使用UWP Community Toolkit软件包中的HyperlinkExtensions,该软件包已经具有必需的附加属性CommandCommandParameter。或者,您可以仅从github复制粘贴其代码。

因此您的代码将如下所示:

<RichTextBlock>
    <Paragraph>
        <Hyperlink xaml:HyperlinkExtensions.Command="{Binding ShowDocumentCommand}">
            <Hyperlink.Inlines>
                <Run Text="Some link" />
            </Hyperlink.Inlines>
        </Hyperlink>
    </Paragraph>
</RichTextBlock>

关于c# - 向RichTextBlock内部的超链接添加交互行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42763198/

10-10 21:43