web-dev-qa-db-ja.com

WPF TextBlockにコマンドを追加するにはどうすればよいですか?

テキストブロックをクリックしてコマンドを実行できるようにしたいのですが。これは可能ですか? (そうでない場合、私はどういうわけかそれの上に透明なボタンを作成しますか?)

61
foreyez

InputBinding を使用できます。

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

編集:ハイパーリンクもおそらく言及する価値があります。

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

その上に透明なボタンを作成せず、TextBlock into itを配置します。

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

ボタンはクリックを消費し、クリックはTextBlockに到達しません。あなたがそれを必要としないなら、それはそれをする一つの方法でしょう。テキストブロックControlTemplateを変更し、ボタンを追加して、ボタンに透明なRectangleTを持つ新しいControlTemplateを与えることができます。より良い解決策は、コマンドを EventBehavior などのイベントに接続し、OnMouseLeftButtonDownイベントに配置する方法を使用することです。

0
dowhilefor