How to a add a command to a WPF TextBlock?

C#WpfXamlCommandTextblock

C# Problem Overview


I'd like to be able to click a textblock and have it run a Command. Is this possible? (if not do I just somehow make a tranparent button over it or something?)

C# Solutions


Solution 1 - C#

You can use a InputBinding.

<TextBlock Text="Hello">
    <TextBlock.InputBindings>
        <MouseBinding Command="" MouseAction="LeftClick" />
    </TextBlock.InputBindings>
</TextBlock>

Edit: Hyperlink is probably worth a mention too.

<TextBlock><Hyperlink Command="" TextDecorations="None" Foreground="Black">Hello</Hyperlink></TextBlock>

Solution 2 - C#

You do not make a transparent button over it, you put the TextBlock into it:

<Button>
    <Button.Template>
        <ControlTemplate TargetType="Button">
            <ContentPresenter />
        </ControlTemplate>
    </Button.Template>
    <TextBlock Text="Lorem Ipsum"/>
</Button>

Solution 3 - C#

Well the button would consume your click and the click would not go further to your TextBlock. If you don't need that, that would be one way to do it. You can modify the textblock ControlTemplate, and add the button, giving the button a new ControlTemplate with a transparent RectangleT. A nicer solution would be to use a way to hookup commands to events like EventBehavior and put it on the OnMouseLeftButtonDown event.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionShai UIView Question on Stackoverflow
Solution 1 - C#Kris View Answer on Stackoverflow
Solution 2 - C#H.B.View Answer on Stackoverflow
Solution 3 - C#dowhileforView Answer on Stackoverflow