web-dev-qa-db-fra.com

Comment ajouter une commande à un WPF TextBlock?

Je voudrais pouvoir cliquer sur un bloc de texte et lui faire exécuter une commande. Est-ce possible? (sinon je fais juste en quelque sorte un bouton transparent dessus ou quelque chose?)

61
foreyez

Vous pouvez utiliser un InputBinding .

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

Edit: Hyperlink vaut probablement aussi une mention.

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

Vous ne faites pas de bouton transparent dessus, vous mettez le TextBlock dans it:

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

Eh bien, le bouton consommerait votre clic et le clic n'irait pas plus loin dans votre TextBlock. Si vous n'en avez pas besoin, ce serait une façon de le faire. Vous pouvez modifier le bloc de texte ControlTemplate et ajouter le bouton, en lui donnant un nouveau ControlTemplate avec un RectangleT transparent. Une meilleure solution serait d'utiliser un moyen de raccorder des commandes à des événements comme EventBehavior et de le placer sur l'événement OnMouseLeftButtonDown.

0
dowhilefor