运行时错误:未找到InverseBooleanConverter。

23 浏览
0 Comments

运行时错误:未找到InverseBooleanConverter。

我尝试遵循以下公告的建议时出现了问题:

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

当我使用ResourceDictionary时,它会导致运行时错误。未找到InverseBooleanConverter。

XMAL如下:

    
        
            
            
        
    

    
    
        
            
                
                    
                
            
        
        
            
               
                
               
            
        
        
            
            
                
            
            
        
    


我正在使用链接中提供的相同代码。

即:

[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
}

在AppResource XML中

  
 .....
 .....

提前感谢

NS

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

您正在使用的密钥不正确。您的资源密钥是InverseBoolToVisibility,而您使用了InverseBooleanConverter作为密钥。

将资源密钥更改为引用正确的资源:


此外,您的转换器实现是错误的。如果您想根据布尔值的反转更改可见性,请将您的转换器代码更新为:

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

0
0 Comments

除了使用转换器进行样式相关绑定以外,使用Style.Triggers也是一种选择。下面的示例展示了当复选框IsChecked = false时,显示画布,否则需要使用InverseBooleanConverter。


    
        
    
    

0