我有一个绑定客户信息的列表视图。我通过在文本框中输入来突出显示列表视图项。例如,当我在文本框中键入“PET”时,它会突出显示列表视图项中的“PET”。它的工作原理和亮点。
但在那之后,当我点击突出显示的项目时,它会给出一个错误。但有趣的是,当我单击它工作的列表视图项目中的空闲位置时。例如,它突出显示了 PETER HEINZ。如果我单击 PETER 或 HEINZ,则会出现错误。但是,如果我点击 PETER HEINZ 之间的空格,它会起作用。这是什么错误?错误信息是
System.InvalidOperationException 未处理 Message="'System.Windows.Documents.Run' 不是 Visual 或 Visual3D。"
源代码如下:
private void HighlightText(Object itx)
{
if (itx != null)
{
if (itx is TextBlock)
{
Regex regex = new Regex("(" + textBox1.Text + ")", RegexOptions.IgnoreCase);
TextBlock tb = itx as TextBlock;
if (textBox1.Text.Length == 0)
{
string str = tb.Text;
tb.Inlines.Clear();
tb.Inlines.Add(str);
return;
}
string[] substrings = regex.Split(tb.Text);
tb.Inlines.Clear();
foreach (var item in substrings)
{
if (regex.Match(item).Success)
{
Run runx = new Run(item);
runx.Background = Brushes.LightGray;
tb.Inlines.Add(runx);
}
else
{
tb.Inlines.Add(item);
}
}
return;
}
else
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(itx as DependencyObject); i++)
{
HighlightText(VisualTreeHelper.GetChild(itx as DependencyObject, i));
}
}
}
}