XAML 'NOT' 运算符?

Posted

技术标签:

【中文标题】XAML \'NOT\' 运算符?【英文标题】:XAML 'NOT' operator?XAML 'NOT' 运算符? 【发布时间】:2010-11-22 00:02:53 【问题描述】:
<Button IsEnabled="Binding (Not IsDisabled)" />

有没有办法用纯 xaml 来做,或者我必须通过代码来做? PS。我问了这个问题,知道我可以像这样创建一个布尔转换器:

<ValueConversion(GetType(Boolean), GetType(Boolean))> 
Public Class BooleanFlagSwitchConverter : Implements IValueConverter

    Public Function Convert(value As Object, targetType As Type, 
            parameter As Object, culture As CultureInfo) As Object 
            Implements IValueConverter.Convert
        Return Not value
    End Function

    Public Function ConvertBack(value As Object, targetType As Type, 
            parameter As Object, ByVal culture As CultureInfo) As Object 
            Implements IValueConverter.ConvertBack
        Return Not value
    End Function

End Class

[ValueConversion(typeof(bool), typeof(bool))]
public class BooleanFlagSwitchConverter : IValueConverter

    public object Convert(object value, Type targetType, object parameter, 
        CultureInfo culture)
    
        return !(bool)value;
    

    public object ConvertBack(object value, Type targetType, object parameter, 
        CultureInfo culture)
    
        return !(bool)value;
    

【问题讨论】:

我认为这是首选 是肯定的。 :) 【参考方案1】:

我会推荐使用https://quickconverter.codeplex.com/

反转一个布尔值就这么简单: &lt;Button IsEnabled="qc:Binding '!$P', P=Binding IsDisabled)" /&gt;

这加快了编写转换器通常所需的时间。

【讨论】:

是的,根据我上面链接的网站的文档。示例:Height="qc:Binding '$P * 10', ConvertBack='$value * 0.1', P=Binding TestWidth, Mode=TwoWay"【参考方案2】:

它不存在。查看properties on the Binding 类。除了可以做你想做的事情的转换器之外,别无他法。

【讨论】:

以上是关于XAML 'NOT' 运算符?的主要内容,如果未能解决你的问题,请参考以下文章

将一个大 XAML 拆分为多个 Sub-XAML 文件

WPF 获取xaml

如何在另一个 XAML 文件中包含 XAML 图标

为啥当 XAML 有效时会发生“Windows.UI.Xaml.Markup.XamlParseException”

怎么在aspx加入xaml

XAML和自定义类