如何在WPF中绑定反向布尔属性?

29 浏览
0 Comments

如何在WPF中绑定反向布尔属性?

我有一个对象,它有一个IsReadOnly属性。如果此属性为true,我希望将

我希望相信我可以像IsEnabled=\"{Binding Path=!IsReadOnly}\"一样轻松地完成它,但WPF无法实现。

我是否只能通过所有样式设置?仅仅为了将一个bool设置为另一个bool的反向,看起来过于冗长。

 

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

您考虑过一个IsNotReadOnly属性吗?如果绑定的对象是MVVM领域中的ViewModel,那么额外的属性会非常合适。如果它是一个直接的Entity模型,您可以考虑通过组合并向表单呈现实体的专门的ViewModel。

0
0 Comments

您可以使用一个值转换器来为您反转布尔属性。

XAML:

IsEnabled="{Binding Path=IsReadOnly, Converter={StaticResource InverseBooleanConverter}}"

转换器:

[ValueConversion(typeof(bool), typeof(bool))]
    public class InverseBooleanConverter: IValueConverter
    {
        #region IValueConverter Members
        public object Convert(object value, Type targetType, object parameter,
            System.Globalization.CultureInfo culture)
        {
            if (targetType != typeof(bool))
                throw new InvalidOperationException("The target must be a boolean");
            return !(bool)value;
        }
        public object ConvertBack(object value, Type targetType, object parameter,
            System.Globalization.CultureInfo culture)
        {
            throw new NotSupportedException();
        }
        #endregion
    }

0