WPF:如何在运行时双击更改按钮内容(文本)

时间:2011-08-19 20:47:47

标签: wpf button runtime double-click

我在WPF中有一个按钮,我想在双击它时更改文本,也就是说我希望光标出现并输入要显示为内容的文本(与按F2时相似的行为)在桌面快捷方式上。)

我想我可以检测到双击,然后显示一个带有透明背景的文本框,这将获取光标,在此新文本框中键入文本,将其设置为按钮内容并删除文本框,但这不是这似乎是正确的方法。


我想我的想法是,我正在开发一个使用形状的图表工具。由于shape不是从ContentControl派生的,所以我不能在其中放置一个文本框,我想模拟这种行为。我正在考虑制作一个自定义控件,但这可能是太多的工作,并且还不太熟悉这个主题。我想另一种方法是使用一个装饰器(可能是一个边框),因为它来自内容控件,我可以做与joe建议相同的事情。任何想法?

我能做的另一件事就是将形状放在网格中,然后将文本框放在形状的顶部,但我不确定这将如何作为一个设计原则,而且我也不知道如果命中测试只在形状或网格上。

1 个答案:

答案 0 :(得分:1)

由于这是WPF,您可以毫无困难地将TextBox放在Button中。如果你不希望文本框有边框和白色背景 - 也就是说,如果你希望它看起来像你只是直接在按钮中输入 - 那么你可以通过将BorderWidth设置为0和背景来删除它们透明的。

你可能想做的是让你的Button的内容成为一个包含普通内容(可能是TextBlock)和TextBox的网格,最初隐藏TextBox(Visibility = Collapsed)。然后,当您获得双击事件时,您将隐藏TextBlock并显示TextBox。

<Button>
    <Grid>
        <TextBlock Name="buttonText">Double-click to rename me</TextBlock>
        <TextBox Name="buttonEdit" Visibility="Collapsed" MinWidth="100"/>
    </Grid>
</Button>