我想要做的就是在XAML中创建一个小超链接.我已经尝试了一切.我放弃.
这是什么语法?
Close
Visual Studio Team:在Visual Studio 2010中,我希望Clippy弹出并说"看起来你正在尝试制作一个超链接"并告诉我该怎么做.你不能用MEF那样做吗?这将是复古的酷,这些小"我如何做我已经知道如何做的HTML"问题在学习过程中耗费了大量时间与XAML.
您无法将超链接添加到StackPanel - 您将收到运行时错误.(其实,我有点惊讶它不是一个编译时错误.)这是因为超链接不生活在WPF的"控制"侧,并
与被布置在屏幕上的矩形块和下降其他的东西UIElement
.相反,它生活在事物的"文本"方面,包括
和
/
或其他一般的短语,用文字包裹和流动的线条和段落并从中下降TextElement
.
一旦你意识到有两个独立的类层次结构具有不同的布局行为,那么超链接将在事物的"文本"方面是有意义的(例如,使得在中间具有带超链接的段落变得容易,甚至对于跨越换行符的超链接).
但不,当你刚开始时,它不是那么容易被发现.
要混合两个世界,并使用超链接作为控件,您需要做的就是将它放在TextBlock中.TextBlock是一个控制事物(即,可以进入StackPanel),包含文本事物(即,可以包含超链接):
Close
您可以使用带有自定义控件模板的Button,下面的代码是一个有限的超链接样式按钮(例如它只支持文本超链接),但也许它会指向正确的方向.
试试这个:
MSN
private void Hyperlink_RequestNavigate(object sender, System.Windows.Navigation.RequestNavigateEventArgs e) { System.Diagnostics.Process.Start(e.Uri.AbsoluteUri); }
这将链接嵌套文本块中的任何绑定文本,我还没有找到更好的方法,我希望如果可能的话,第一个文本块不存在。这也适用于DataTemplates。