如何在Silverlight中为HyperlinkBut​​ton添加下划线?

我似乎可以像格式化TextBlock一样格式化HyperlinkBut​​ton:

HyperlinkButton hyperlinkButton = new HyperlinkButton(); hyperlinkButton.Content = "google"; hyperlinkButton.NavigateUri = new Uri("http://www.google.com"); hyperlinkButton.TargetName = "blank"; hyperlinkButton.Foreground = XamlHelpers.GetColorFromHex("555"); hyperlinkButton.TextDecoration = ... //error hyperlinkButton.FontWeight = FontWeights.Bold; 

但是,TextDecoration不像在TextBlock中那样工作。 我在鼠标hover时得到一个自动下划线但是希望它在鼠标hover之前也有下划线。

如何在Silverlight中为HyperlinkBut​​ton添加下划线?

如果你只需要静态下划线(没有鼠标hover效果),你应该只使用TextBlock作为HyperlinkBut​​ton的内容。 由于HyperlinkBut​​ton是一个ContentControl,它可以采用任何其他控件类型作为内容(不仅仅是简单的字符串)。

下面是一些XAML,它将为您提供带下划线的TextBlock作为HyperlinkBut​​ton的内容:

     

您应该能够创建TextBlock并在代码隐藏中使用C#设置HyperlinkBut​​ton的Content属性,如果这正是您正在做的事情。

正如David所说,编辑ControlTemplate肯定会根据您的喜好设置HyperlinkBut​​ton的样式,但使用实际带下划线的TextBlock作为内容可能更简单,并且如果您需要这样做,则可以更少XAML。

编辑控件模板。 我通过Expression Blend撕掉了这个。

   

更改此控件的可见性: