我創建了一個轉換器,用於在報表中突出顯示不同顏色的某些關鍵字。我沒有使用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
轉換器需要接收實現IValueConverter接口的資源... Convert方法的參數值將具有您想要的AdvisoryViewModelCollection! – sexta13