顧客情報をバインドするリストビューがあります。テキスト ボックスに入力して、リストビューの項目を強調表示します。たとえば、テキストボックスに「PET」と入力すると、リストビュー項目の「PET」が強調表示されます。それは機能し、強調します。
しかし、その後、強調表示された項目をクリックすると、エラーが発生します。しかし、リストビュー項目の空いている場所をクリックすると、それが機能するのは興味深いことです。たとえば、ピーター・ハインツが強調されました。PETER または HEINZ をクリックすると、エラーが発生します。しかし、PETER HEINZ の間のスペースをクリックすると機能します。これは何のエラーですか?エラーメッセージは
System.InvalidOperationException は処理されませんでした Message="'System.Windows.Documents.Run' is not a Visual or 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));
}
}
}
}