レポート内のいくつかのキーワードを強調表示するコンバーターを追加しましたが、レポートがまったく表示されなくなりました。xaml コードからコンバーターを削除すると、レポートが表示されます。このコードは、キーワードが見つからない場合は元のオブジェクトを返すことを示しています。私が何を間違えたのかわからない。
xaml:
<local:AdvisoryReportView x:Name="_advisoryReportView" Grid.Column="2" Grid.Row="0" Grid.RowSpan="4"
VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
DataContext="{Binding AdvisoryViewModels, Converter={StaticResource highlightKeywordsConverter}}"/>
C#
public class HighlightKeywordsConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string returnText = string.Empty; // "Nothing Selected";
string input = null;
string replacementText = null;
string replacePattern = null;
string[] keyWords = new string[]
{
"test1",
"test2",
"test3",
};
if (value != null && !value.ToString().Contains("DependencyProperty.UnsetValue"))
input = value.ToString();
if (!String.IsNullOrEmpty(input))
{
for (int i = 0; i < 3; i++)
{
if (input.Contains(keyWords[i]))
{
switch (i)
{
case 0:
replacementText = String.Format(
"<FONT style=\"BACKGROUND-COLOR: Blue\">{0}</FONT>", "$1");
replacePattern = @"(?![^<>]*>)(" + keyWords[i] + ")";
break;
case 1:
replacementText = String.Format(
"<FONT style=\"BACKGROUND-COLOR: Beige\">{0}</FONT>", "$1");
replacePattern = @"(?![^<>]*>)(" + keyWords[i] + ")";
break;
case 2:
replacementText = String.Format(
"<FONT style=\"BACKGROUND-COLOR: Azure\">{0}</FONT>", "$1");
replacePattern = @"(?![^<>]*>)(" + keyWords[i] + ")";
break;
} //end of switch
returnText = Regex.Replace(input,
replacePattern,
replacementText,
RegexOptions.IgnoreCase);
} //end of if
else return input;
}//end of for
} //end of if
else
{
// Otherwise, just send back the original text, or an
// empty string if we did not get anything.
returnText = input;
}
return returnText;
} //end of Convert
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
} //end of class