2

我在 WPF 项目的 XAML 中使用布尔转换器。我想在“IsBusy”为真时禁用一些按钮。我绝对确定 IsBusy 已正确设置为 true/false。我能够在没有转换器的情况下成功地直接绑定到 IsBusy。以下内容目前不起作用。我已经在实际的转换器类中放置了断点,并且永远不会命中“Convert”和“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
    }
}
4

2 回答 2

4

如果 isBusy 依赖属性?如果不是,则 IsBusy 的更改表单将不会传输到 isEnable

于 2012-11-06T17:11:03.053 回答
1

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

于 2012-11-06T18:34:04.620 回答