"可点击"文字块?

pea*_*ewg 19 .net xaml onclick textblock windows-phone-7

我有一个WP7应用程序,我希望有一个"可点击" TextBlock区域,当用户点击它时TextBlock,它将其置于编辑模式(一个不同的控件).这将在编辑文本之前为用户添加另一个显式步骤.

没有点击事件TextBlock(这并不让我感到惊讶).

有没有办法做到这一点?包裹在另一个控件或类似的东西?

ala*_*a27 21

是的,有一个点击事件.它叫做MouseLeftButtonDown

textBlock1.MouseLeftButtonDown +=new MouseButtonEventHandler(textBlock1_MouseLeftButtonDown);

private void textBlock1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{

}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,7.1(Mango)会添加Tap事件. (4认同)

Mar*_*cze 12

我通过在其模板中创建一个带有TextBlock的Button来解决这个问题,如下所示:

<Button Click="button_Click">
    <Button.Template>
        <ControlTemplate>
            <TextBlock ... />
        </ControlTemplate>
    </Button.Template>
</Button>
Run Code Online (Sandbox Code Playgroud)

这是一个更多的标记,但您不需要编写任何代码,它由框架提供并正常工作.


Mic*_*k N 7

您可以使用手势支持关联单击事件.

编辑:通过这样做,您的行为将与操作期间用户在显示屏上移动手指的点击(点按)一致.点击不会在mousedown下触发,移开控制,mouseup.点击手势的工作方式相同.并非所有用户都知道他们可以通过移动他们的鼠标/手指来中止点击,但有些用户会这样做,如果没有正确处理它,你就会被抓住.MouseLeftButtonUp处理以相同的方式工作,但我不建议依赖于此,因为它不是设计的,可能会出现意外的更改或与其他控件的冲突.


Ku6*_*opr 5

有几个答案建议使用MouseLeftButton事件,但我看到了很多这种方法出错的例子.我建议将TextBlock(或其他控件/控件)放入具有自定义样式的Button中(删除除内容控件之外的所有边框/边距).它好多了!

 <Button Style={StaticResource OnlyContentStyle}>
      <Button.Content>
           <TextBlock />
      </Button.Content>
 </Button>
Run Code Online (Sandbox Code Playgroud)

  • 在Blend中:右键单击Button,编辑模板 - 编辑副本.比删除所有边框,动画等 (2认同)