我有一个RichTextBlock
和Hyperlink
。
单击超链接时,我想从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,该软件包已经具有必需的附加属性Command
和CommandParameter
。或者,您可以仅从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/