wpf - 如何在XAML中制作简单的超链接?

标签 wpf xaml hyperlink

我想做的就是在 XAML 中创建一个小超链接。我已经尝试了一切。我放弃了。

这个的语法是什么?

<StackPanel Width="70" HorizontalAlignment="Center">

    <Hyperlink Click="buttonClose_Click" Cursor="Hand" 
         Foreground="#555" Width="31" Margin="0 0 0 15"  
         HorizontalAlignment="Right">Close</Hyperlink>

    <Button Width="60" Margin="0 0 0 3">Test 1</Button>
    <Button Width="60" Margin="0 0 0 3">Test 2</Button>
    <Button Width="60" Margin="0 0 0 3">Test 3</Button>
    <Button Width="60" Margin="0 0 0 3">Test 4</Button>
</StackPanel>

Visual Studio 团队:在 Visual Studio 2010 中,我希望 Clippy 弹出并显示“您似乎正在尝试创建超链接”并告诉我如何操作。你不能用 MEF 做到这一点吗?这会很复古,而且这些小问题“我如何做我已经知道如何在 HTML 中做的事情”会在学习 XAML 的过程中消耗大量时间。

最佳答案

您无法将超链接添加到 StackPanel - 您将收到运行时错误。 (实际上,我有点惊讶这不是编译时错误。)这是因为超链接并不存在于 WPF 的“控件”端, <Button><StackPanel>以及其他布置在屏幕矩形 block 上并从UIElement下降的东西。相反,它存在于事物的“文本”方面,带有 <Bold><Run><Paragraph>以及其他一般文本内容,它们自动换行并在行和段落中流动,并从 TextElement 下降。 .

一旦您意识到有两个具有不同布局行为的独立类层次结构,超链接位于事物的“文本”一侧就有意义了(例如可以轻松地在中间有一个带有超链接的段落,并且即使该超链接跨行换行)。

但是不,当你刚开始时,它并不是那么容易被发现。

要混合这两个世界,并使用超链接作为控件,您所需要做的就是将其放入 TextBlock 中。 TextBlock 是一个类似控制的东西(即,可以进入 StackPanel),它包含类似文本的东西(即,可以包含超链接):

<TextBlock><Hyperlink Click="buttonClose_Click">Close</Hyperlink></TextBlock>

关于wpf - 如何在XAML中制作简单的超链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/531621/

相关文章:

c# - 从 WPF 中的 ViewModel 动态生成简单 View ?

wpf - XAML SVG 在运行时颜色变化

wpf - GridView 双击

html - anchor 链接链接到页面上的错误位置

javascript - 如何使用 Casperjs 检查网页中损坏的链接?

wpf - 在 WPF 中呈现非托管视频帧的最有效方法是什么?

wpf - 将代码后面的代码转移到 wpf 中的 View 模型

c# - 使用 C# 条件更改按钮背景 WPF 鼠标悬停属性

wpf - 创建六边形网格

jquery - 需要禁用 CMS 生成的特定类中的链接