WPF文本框和双击

5
我正在一个WPF应用程序中展示MAC地址。 我希望该MAC地址可选择并进行复制/粘贴,因此我使用了只读文本框。
当用户双击时,我想选择整个MAC地址。
由于WPF和Windows的默认行为是双击选中冒号之间一部分数字,因此当MAC地址为:00:55:66:77:99时,
当用户双击时,只有MAC地址的一部分(例如55)被选中。
在不编写代码的情况下是否有一种方法可以使整个文本框内容被选择?
或者也许我不应该使用文本框?
谢谢。
4个回答

6
在文本框的On MouseDoubleClick事件中,您可以调用文本框的SelectAll()方法来选择其中所有的文本。
void textBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    (sender as TextBox).SelectAll();
}

1

很遗憾,我认为在TextBox中没有直接实现这个功能的方法。

话虽如此,通过附加属性或表达式行为(我更喜欢这种方式),向文本框添加此行为将是微不足道的。只需注意选择更改,如果有任何内容被选中,则选择所有内容。然后,您可以轻松地在其他地方重复使用它,而无需向代码后台文件添加代码。您仍然会添加代码,但不是在实际的UserControl或Window类中,而是在可重用组件中,该组件将被插入到xaml中。


0

你不能处理 MouseDoubleClick 事件吗?否则,如果你想始终防止部分选择,你可以处理 SelectionChanged 事件。在任何情况下,你都可以使用 SelectAll 方法。

算了,我重新阅读了一下,看到你想要一个非代码的解决方案。不幸的是,我不知道有什么解决方案。


0

我喜欢行为的想法,但我不知道 Blend,因此我必须重新分配一些与 Blend 相关的程序集。 所以最终我创建了一个新类型的文本框,它继承自文本框,并在鼠标双击时执行 selectAll 操作。

感谢所有的回答。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接