0

レポート内のいくつかのキーワードを強調表示するコンバーターを追加しましたが、レポートがまったく表示されなくなりました。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
4

1 に答える 1