显示可点击的文字WPF

时间:2011-10-20 21:01:07

标签: c# wpf xaml

我想在GUI中显示一些文本,并为用户提供双击它的能力。 我想抓住这个事件并处理它。

我想这样做:

 <TextBlock   
        Height="39" 
        TextElement.FontSize="18" 
        FontFamily="Verdana"
        HorizontalAlignment="Left"
        VerticalAlignment="Center"
        Name="Filelink"
        Padding="5,0,0,0"
        TextDecorations="Underline"
        Text="{Binding Path=FilePath}"/>

但似乎要处理TextBlock中的点击并不容易。

任何想法提供可点击文字的最佳方式是什么。

感谢。

4 个答案:

答案 0 :(得分:18)

如果您想要可点击的文字,您只需重新设置Button

<Button Content="Text here" Click="Click_Handler">
    <Button.Template>
        <ControlTemplate TargetType="{x:Type Button}">
            <ContentPresenter />
        </ControlTemplate>
    </Button.Template>
</Button>

另见this question

答案 1 :(得分:17)

您可以在Textblock中嵌入超链接,如本例所示

<TextBlock>
    <Hyperlink NavigateUri="Reviews.xaml">Click Me </Hyperlink>
</TextBlock>

您还可以处理超链接Click事件以调用Navigate例如

答案 2 :(得分:2)

为什么不使用Label并监听MouseDoubleClick事件(尽管我同意Xin对可用性的评论)?

答案 3 :(得分:1)

如果使用LabelHyperlink在您的情况下不起作用,您可以采用创建新的派生TextBlock的方法来简单定义新{{1}通过树冒泡的路由事件:

DoubleClick

此控件的使用方式与标准public class ClickableTextBlock : TextBlock { #region Overrides protected override void OnMouseLeftButtonDown(System.Windows.Input.MouseButtonEventArgs e) { base.OnMouseLeftButtonDown(e); if (e.ClickCount == 2) { RaiseEvent(new RoutedEventArgs(DoubleClickEvent, this)); } } #endregion #region DoubleClick RoutedEvent public static readonly RoutedEvent DoubleClickEvent = EventManager.RegisterRoutedEvent("DoubleClick", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(ClickableTextBlock)); public event RoutedEventHandler DoubleClick { add { AddHandler(DoubleClickEvent, value); } remove { RemoveHandler(DoubleClickEvent, value); } } #endregion } 相同。在此示例中,双击TextBlock将引发TextBlock事件,然后由父DoubleClick采取行动以启动动画:

StackPanel

希望这有帮助!