该类型的对象不能应用于需要类型system.windows.data.ivalueconverter的属性

时间:2013-09-26 15:31:05

标签: c# wpf mvvm

我创建了一个转换器,用于在报告中突出显示不同颜色的某些关键字。我没有使用IValueconverter,因为关键字是硬编码的。但是,我在xaml中得到了错误。我该如何解决:

<ResourceDictionary>
    <converter:HighlightKeywordsConverter x:Key="highlightKeywordsConverter" />
 </ResourceDictionary>
<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
{
    //public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    public object Convert(AdvisoryViewModelCollection input)
    {
        string returnText = string.Empty; // "Nothing Selected";
        string searchText = null;
        string[] keyWords = new string[]
            {
                "CLSD Closed",
                "BA NIL Braking action nil",
                "BA POOR Braking action poor",
            };


                   for (int i = 0; i < 3; i++)
        {
            if (input.ToString().Contains(keyWords[i]))
            {
                switch (i)
                {
                    case 0:
                        searchText = String.Format("<FONT style=\"BACKGROUND-COLOR: Blue\">{0}</FONT>", "$1");
                        break;

                    case 1:
                        searchText = String.Format("<FONT style=\"BACKGROUND-COLOR: Beige\">{0}</FONT>", "$1");
                        break;

                    case 2:
                        searchText = String.Format("<FONT style=\"BACKGROUND-COLOR: Azure\">{0}</FONT>", "$1");
                        break;


                } //end of switch
                if (!String.IsNullOrEmpty(input.ToString()) && !String.IsNullOrEmpty(searchText))
                {
                    string replacePattern = @"(?![^<>]*>)(" + searchText + ")";

                    returnText = Regex.Replace(input.ToString(),
                                               replacePattern,
                                               searchText,
                                               RegexOptions.IgnoreCase);
                }
            } //end of if
            else
            {
                // Otherwise, just send back the original text, or an 
                // empty string if we did not get anything.
                returnText = input.ToString();
            }
        } //end of for
        return returnText;
    } //end of Convert
} //end of class

1 个答案:

答案 0 :(得分:4)

HighlightKeywordsConverter需要实现IValueConverter