Как добавить команду в текстовый блок WPF? - PullRequest
60 голосов
/ 10 августа 2011

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

Ответы [ 3 ]

132 голосов
/ 10 августа 2011

Вы можете использовать InputBinding .

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

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

<TextBlock><Hyperlink Command="" TextDecorations="None" Foreground="Black">Hello</Hyperlink></TextBlock>
25 голосов
/ 10 августа 2011

Вы не делаете прозрачную кнопку поверх нее, вы помещаете TextBlock в it:

<Button>
    <Button.Template>
        <ControlTemplate TargetType="Button">
            <ContentPresenter />
        </ControlTemplate>
    </Button.Template>
    <TextBlock Text="Lorem Ipsum"/>
</Button>
0 голосов
/ 10 августа 2011

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

...