当不是空字符串时触发条件

7 浏览
0 Comments

当不是空字符串时触发条件

我们可以检查一些控件的字符串属性是否为空,如下所示的代码:\n


    
    

\n但是,怎样定义一个基于“非空”字符串的条件呢?\n



    
    

0
0 Comments

当不是空字符串时触发条件的原因是为了快速解决这个问题,需要在元素声明或样式中默认应用于相反条件的值,然后使用直接相等的条件来改变值。

例如,假设当为空字符串时,设置为5的边距,当非空字符串时,需要设置为0,那么可以在样式中默认设置为0,并使用触发器检查是否为空字符串,并设置为5。确保默认的Setter(0)在样式中出现在触发器(5)之前。

0
0 Comments

Trigger Condition when Not an Empty String的问题出现的原因是在使用MVVM时,需要根据某个条件来决定控件的显示方式,但是在ViewModel中并没有直接提供这样的条件。解决这个问题的方法是使用ValueConverter。

MVVM的解决方法是在ViewModel类中添加一个额外的属性,用于确定控件的显示方式。通过将View的属性与ViewModel的额外属性进行绑定,可以操作View的显示。

需要注意的是,在MVVM中,ViewModel不应该知道如何显示。相反,View应该接收ViewModel并根据自己的判断来显示。例如,在ViewModel中添加一个颜色属性来告诉View显示什么颜色,在纯粹的MVVM角度来看并不好。但是在现实世界中,"纯粹"的编程模型往往会有一些问题。

另外,对于ValueConverter也有一些不喜欢的声音。因为它是在视图中编写的代码,需要由设计师来应用。这些转换器"悬挂"在View和ViewModel之间。

0
0 Comments

触发条件是不是空字符串的原因是为了解决在WPF中设置DataTrigger时,当绑定的属性值为null或空字符串时,无法正确触发Trigger的问题。上述代码中使用了两个DataTrigger来处理这个问题。第一个DataTrigger的Binding属性绑定到VolumeGroup属性,并且设置Value为null,当VolumeGroup为null时,会触发该Trigger,并使用Setter将Background属性设置为DataGridBackground。第二个DataTrigger的Binding属性同样绑定到VolumeGroup属性,但是设置Value为"",当VolumeGroup为空字符串时,会触发该Trigger,并同样使用Setter将Background属性设置为DataGridBackground。

解决方法是在Style的Triggers中添加上述的两个DataTrigger,并为其设置正确的Binding和Value。此外,在Style的Setter中还设置了一个默认的Background属性为DarkOliveGreen,用于处理VolumeGroup通常为空的情况,当VolumeGroup不满足上述两个DataTrigger时,会使用这个默认的Background属性值。

通过以上的解决方法,可以确保在WPF中正确地触发Trigger条件,无论是属性值为null还是空字符串。

0