Как добавить команду в текстовый блок WPF?


Я хотел бы иметь возможность щелкнуть текстовый блок и запустить команду. Это возможно? (если нет, я просто как-то делаю над ним прозрачную кнопку или что-то еще?)

3 54

3 ответа:

можно использовать InputBinding.

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

Edit: гиперссылка, вероятно, тоже стоит упомянуть.

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

вы не делаете прозрачную кнопку над ним, вы ставите TextBlock на это:

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

Ну кнопка будет потреблять ваш щелчок, и щелчок не будет идти дальше к вашему TextBlock. Если вам это не нужно, это был бы один из способов сделать это. Вы можете изменить textblock ControlTemplate и добавить кнопку, предоставив кнопке новую ControlTemplate с прозрачным прямоугольником. Более приятным решением было бы использовать способ подключения команд к таким событиям, как EventBehavior и поставить его на OnMouseLeftButtonDown событие.