大家应该都知道Excel中的Conditional Formatting的功能吧。我们可以设置一些条件,当条件满足时修改格子的格式信息。
例如:一个学生成绩表中,我们可以设置当学生成绩低于60分时,将文字颜色改为红色。
如果我们要在我们的应用程序中实现这样的功能,就必须写比较多的代码。但是,在Avalon中集成了对此项功能的支持。下面是一个XAML描述。














































代码中用黄色标注的部分是实现Conditional Formatting的主要逻辑。我们再来看一下c:bgConverter的实现:

















Ok, 我们来看一下程序的运行效果。
如此就实现了“当书的页数多于350页时背景色改为红色”的功能。基本的实现方式就是在进行数据绑定时,提供了挂接IValueConverter的能力。开发人员可以在这里挂接自己的Converter,实现各种Conditional Formatting.
完整的程序可以在Avalon的SDK中找到。WinFS SDK->Simples->"Avalon" Simples->Technology Simples->Data->Data Binding->Binding with Data in an ADO DataSet Sample
或从这里下载