当数据绑定和应用转换器时否定布尔属性

22 浏览
0 Comments

当数据绑定和应用转换器时否定布尔属性

在XAML绑定标记中,可以否定布尔属性。不确定这是否是正确的描述。例如,我正在使用其中一个内置转换器,根据窗口是否处于活动状态来设置窗口边框控件的可见性。


我想要这样的反面,如果窗口处于活动状态,则将可见性设置为false。这只是一个例子,但我遇到过其他情况,希望可以对由标准转换器评估的布尔属性应用“!”,这样我就不必编写自定义转换器。

admin 更改状态以发布 2023年5月20日
0
0 Comments

可以在ViewModel中创建一个否定的属性:

public bool IsNotActive {get { return !IsActive; } }

并相应地通知更改,

-- 或者 --

使用一个InverseBoolToVisibilityConverter

public class InverseBoolToVisibilityConverter: BaseConverterMarkupExtension
    {
        public override Visibility Convert(bool value, Type targetType, object parameter)
        {
            return !value ? Visibility.Visible : parameter != null ? Visibility.Hidden : Visibility.Collapsed;
        }
        public override bool ConvertBack(Visibility value, Type targetType, object parameter)
        {
            return value != Visibility.Visible;
        }
    }

0
0 Comments

另一种方法是使用DataTrigger而不是绑定转换器:


    
        
    

0