我正在寻找一种基于Windows.UI.Xaml.Controls.TextBox
控件内的搜索词突出显示(而不是选择)单词的方法。
似乎没有任何方法可以覆盖文本呈现行为?这可以用文本框控件完成吗?
编辑:我最初试图使用 RichEditBox,但在粘贴我试图阻止的格式化文本时遇到了问题(我可以清除格式的唯一事件是 TextChanged,这似乎有点晚了)。我还真的需要更多地控制高光的渲染
我正在寻找一种基于Windows.UI.Xaml.Controls.TextBox
控件内的搜索词突出显示(而不是选择)单词的方法。
似乎没有任何方法可以覆盖文本呈现行为?这可以用文本框控件完成吗?
编辑:我最初试图使用 RichEditBox,但在粘贴我试图阻止的格式化文本时遇到了问题(我可以清除格式的唯一事件是 TextChanged,这似乎有点晚了)。我还真的需要更多地控制高光的渲染
文本框在格式和文本选择方面非常有限。
您可能希望使用 RichTextBox 控件而不是 TextBox,因为它为您提供了更大的选择和格式化功能,可以更轻松地突出显示多个术语。
这是一个快速入门: http: //www.devx.com/dotnet/Article/34644
我有相同的问题。但万一你不知道,我还是会发布这个(这不是一个完整的答案,但可能会让你开始。)
您可以使用以下方法突出显示单词:
int indexOfFoundKeyword = 1;
int lastIndexOfFoundKeyword = 12;
txtbox.SelectionStart = indexOfFoundKeyword;
txtbox.SelectionLength = lastIndexOfFoundKeyword;
如果将它放在按钮单击事件中,然后键入大约 20 个字符并单击按钮,您将看到可以突出显示 Metro 文本框中的单词。我遇到的问题是找到 found 关键字的开头和结尾,以便我知道要分配哪些值SelectionStart
,SelectionLength
如果我正确理解了您的问题,我认为这也是您遇到的问题。
好的,这似乎有点喜怒无常,但大部分时间都有效。(并且在它起作用时准确):
// find the word 'jason'.
string word = "jason";
int a, b;
a = genericBox.Text.IndexOf(word);
b = word.Length;
genericBox.SelectionStart = a;
genericBox.SelectionLength = b;
如果您要做的只是找到一些文本,然后选择它,那么这证明它可以完成。现在我知道这不是最好的方法,但这是我能够让这样的东西在 Metro 应用程序的纯 TextBox 中工作的唯一方法。