我在silverlight应用程序上有一个搜索文本框,其中用户在搜索条件和结果显示在文本块中显示,要求是搜索条件匹配应突出显示在文本块中。
我见过一些在文本块中突出显示搜索词的示例,但没有一个使用mvvm模式。我在视图模型中绑定了文本块的文本属性,我试图访问内联集合来指定不同的标签,但后来才知道内联集合是不可绑定的。
<TextBlock Text="{Binding Description}"/>此描述正在ViewModel中设置
发布于 2011-11-30 05:16:19
好了,我知道如何在MVVM中做到这一点。
RadRichTextBox控件来完成这项任务。bindableXaml的新类&将字符串转换为RadRichTextBox的方法(在代码中创建了新的XAML,以便在此中突出显示工作,并将结果作为radDocument)RadRichTextBox,因此在ViewModel中,来自DB的字符串通过StringToXaml方法转换为所需的XAML格式。您可以使用RichTextBox实现相同的结果,但是在其中创建的XAML将需要StringBuilder和RegEx.Match()来突出显示。发布于 2011-11-23 13:48:34
正如将要提到的,这是View功能,因此可以将其放在视图代码后面。
在你的.xaml.cs中
private void ButtonSearchRequest_Click(object sender, RoutedEventArgs e)
{
Search(TextBoxToSearch, TextBoxSearchTerm.Text);
}
private void Search(TextBox tb, string strSearchTerm)
{
strSearchTerm = strSearchTerm.Trim().ToLower();
int iNextMatch = tb.Text.ToLower().IndexOf(strSearchTerm);
if (iNextMatch >= 0)
{
tb.Focus();
tb.CaretIndex = iNextMatch;
tb.Select(iNextMatch, strSearchTerm.Length);
tb.ScrollToLine(tb.GetLineIndexFromCharacterIndex(iNextMatch));
}
}https://stackoverflow.com/questions/8227207
复制相似问题