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



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

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


我想我脑子里想的是,我正在开发一个使用形状的绘图工具。因为shape不是从ContentControl派生的,所以我不能在里面放一个文本框,我想模拟这个行为。我想做一个自定义控件,但这可能是太多的工作,我还不太熟悉这个话题。我想另一种方法是使用装饰器(也许是边框),因为它来自contentcontrol,我可以做同样的事情。什么好主意吗?

我可以做的另一件事是把形状放在一个网格中,然后把文本框放在形状的顶部,但我不确定这是一个设计原则,我也不知道命中测试是只在形状上还是在网格上。

因为这是WPF,你可以把一个文本框放在你的按钮没有麻烦。如果你不想让文本框有边框和白色背景——也就是说,如果你想让它看起来像你只是直接输入按钮——那么你可以通过设置BorderWidth为0和background为Transparent来删除它们。

你可能想要做的是你的按钮的内容是一个网格,包含两个正常的内容(可能是一个TextBlock)和文本框,与文本框最初隐藏(可见性=塌陷)。然后当你得到双击事件时,你会隐藏TextBlock并显示TextBox。

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

最新更新