2011-08-09 10 views

Respuesta

121

Se puede utilizar un InputBinding.

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

Editar: También vale la pena mencionar el hipervínculo.

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

Esto sería bastante bueno si no se disparara con el mouse hacia abajo, todavía +1 aunque por simplicidad ... –

+2

Sí, MouseBinding puede ser un poco limitado a veces. El método Hyperlink que agregue se ejecuta en MouseUp – Kris

+3

Wow, eres bastante ingenioso, esa alternativa de hipervínculo es bastante perfecta ... –

0

Bueno, el botón consumiría su clic y el clic no iría más allá de su TextBlock. Si no necesitas eso, esa sería una forma de hacerlo. Puede modificar el bloque de texto ControlTemplate y agregar el botón, dando al botón un nuevo ControlTemplate con un RectangleT transparente. Una mejor solución sería usar una forma de conectar comandos a eventos como EventBehavior y ponerlo en el evento OnMouseLeftButtonDown.

22

usted no hace un botón transparente sobre ella, se pone el TextBlock en que:

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

También puede agregar 'MinHeight =" 0 "' al botón. –

Cuestiones relacionadas