我有一个Silverlight 3控件,我使用ItemsControl来显示项目列表。我已经实现了一个“过滤器”或“搜索”文本框,允许用户在控件上的文本框中输入一个搜索项,该项将限制ItemsControl中显示的项目为包含在文本框中输入的字符串的项目。我已经能够实现此功能,但我想通过更改items控件中显示的文本中搜索词的文本颜色来增强它。例如,如果用户在搜索文本框中键入“foo”,我想将ItemsControl中的项目(我已经在做)过滤到包含“foo”的项目,并更改子字符串“foo”的背景颜色“它出现在ItemsControl中。
理想情况下,我会实现一个IValueConverter并将搜索文本框中的值作为参数传递给转换器。转换器然后可以搜索正在转换的值并更改所有“foo”子串的背景颜色(不知道我将如何执行此操作,也可以使用Inlines?)。传递给值转换器的参数值似乎必须是静态资源。有什么办法可以将非静态值传递给值转换器来完成我想要做的事情吗?还有另一种我不应该使用IValueConverter的方法吗?
答案 0 :(得分:0)
请注意,我还没有完全解决这个问题,但我在使用Interaction.Behaviors的应用程序中做了类似的事情。这比直接转换器解决方案更灵活一些。在我的解决方案中,我使用它来根据各种条件突出显示网格中的单元格和/或文本(例如,这是一个关键项目吗?将其设置为红色)。
看看这篇博客文章,它很好地解释了这个过程,并且不仅仅适用于Telerik RadGridView。 (仅供参考,我认为您需要添加对System.Windows.Interactivity的引用)