テキストブロックをクリックしてコマンドを実行できるようにしたいのですが。これは可能ですか? (そうでない場合、私はどういうわけかそれの上に透明なボタンを作成しますか?)
InputBinding を使用できます。
<TextBlock Text="Hello">
<TextBlock.InputBindings>
<MouseBinding Command="" MouseAction="LeftClick" />
</TextBlock.InputBindings>
</TextBlock>
編集:ハイパーリンクもおそらく言及する価値があります。
<TextBlock><Hyperlink Command="" TextDecorations="None" Foreground="Black">Hello</Hyperlink></TextBlock>
その上に透明なボタンを作成せず、TextBlock into itを配置します。
<Button>
<Button.Template>
<ControlTemplate TargetType="Button">
<ContentPresenter />
</ControlTemplate>
</Button.Template>
<TextBlock Text="Lorem Ipsum"/>
</Button>
ボタンはクリックを消費し、クリックはTextBlock
に到達しません。あなたがそれを必要としないなら、それはそれをする一つの方法でしょう。テキストブロックControlTemplateを変更し、ボタンを追加して、ボタンに透明なRectangleTを持つ新しいControlTemplateを与えることができます。より良い解決策は、コマンドを EventBehavior などのイベントに接続し、OnMouseLeftButtonDown
イベントに配置する方法を使用することです。