2013-09-26 47 views
0

我创建了一个转换器,用于在报表中突出显示不同颜色的某些关键字。我没有使用IValueconverter,因为关键字是硬编码的。但是,我在xaml中遇到了错误。如何解决这个问题呢:该类型的对象不能应用于需要类型的属性。system.windows.data.ivalueconverter

<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 
+0

转换器需要接收实现IValueConverter接口的资源... Convert方法的参数值将具有您想要的AdvisoryViewModelCollection! – sexta13

回答

4

HighlightKeywordsConverter需要实现IValueConverter

+0

如何定义突出显示所需的硬编码文本的值?这些不通过值参数传递。 –

+0

你有两种可能性。或者保留硬编码的值,或者使用这些关键字定义一个StaticResource绑定到模型中的列表,并将其传递给ConverterParameter。 – sexta13

+0

谢谢!它有助于! –

相关问题