布尔转换器没有击中转换器

时间:2012-11-06 16:55:11

标签: c# wpf xaml

我在WPF项目的XAML中使用布尔转换器。我想禁用几个按钮,而#34; IsBusy"是真的。我绝对相信IsBusy正确地设置为true / false。我能够在没有转换器的情况下成功直接绑定到IsBusy。以下内容目前无效。我在实际的转换器类和"转换"中设置了断点。和" ConvertBack"方法永远不会被击中。这有什么不对?

IsEnabled="{Binding IsBusy, Converter={StaticResource InvertedBooleanConverter}}"

资源:

<Window.Resources>
    <converters:InvertedBooleanConverter x:Key="InvertedBooleanConverter" />
</Window.Resources>

转换器:

xmlns:converters="clr-namespace:MyProject.Converters"

转换器:

namespace MyProject.Converters
 {

    [ValueConversion(typeof(bool), typeof(bool))]
    public class InvertedBooleanConverter : 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
    }
}

2 个答案:

答案 0 :(得分:4)

如果isBusy依赖属性?如果不是,改变形式IsBusy将不会传输到isEnable

答案 1 :(得分:1)

退一步检查绑定是否在正确的位置 - 添加<TextBlock Text="{Binding}" />并确保它显示正确的类(包含IsBusy的类)。