XAML高级教程(02_Style样式及其触发器)2
作者:陈钰桃
撰写时间:2022年3月17日
3、由数据触发的DataTrigger
程序中经常会遇到基于数据执行某些判断情况,遇到这种情况时我们可以考虑使用 DataTrigger。DataTrigger对象的Binding属性会把数据源源不断送过来,一旦送来的值与Value属性一致,DataTrigger即被触发。
下面例子中,当TextBox的Text长度小于7个字符时其Border会保持红色。
XAML代码如下:
这个例子中唯一需要解释的就是DataTrigger的Binding。为了将控件自己作为数据源,我们使用了RelativeSource,初学者经常认为“不明确指出Source的值Binding就会将控件自己作为数据的来源”,这是错误的,因为不名曲指出Source时Binding会把控件的DataContext属性作为数据源而非把控件自身当作数据源。Binding的Path被设置为Text.Length,即我们关注的是字符串的长度。长度是一个具体的数字,如何基于这个长度值做判断呢?这就用到了Converter。我们创建如下的Converter:
经Converter转换后ÿ