2013-11-04 159 views
1

我在我的silverlight項目中有BooleanToVisibilityConverterInverseBooleanToVisibilityConverter。這兩個都相當標準,但由於某種原因,在這一個對話框中,他們拋出了很多錯誤(至少我認爲它的轉換器)。我似乎無法得到它拋出任何異常我可以查看我只是得到這個輸出,我不知道爲什麼!轉換器無法轉換錯誤

System.Windows.Data Error: 'MS.Internal.Data.DynamicValueConverter' converter failed to convert value 'True' (type 'System.String'); BindingExpression: Path='CategoryTitle' DataItem='null' (HashCode=0); target element is 'System.Windows.Controls.Grid' (Name=''); target property is 'Visibility' (type 'System.Windows.Visibility').. System.ArgumentException: Requested value 'True' was not found. 
    at System.Enum.EnumResult.SetFailure(ParseFailureKind failure, String failureMessageID, Object failureMessageFormatArgument) 
    at System.Enum.TryParseEnum(Type enumType, String value, Boolean ignoreCase, EnumResult& parseResult) 
    at System.Enum.Parse(Type enumType, String value, Boolean ignoreCase) 
    at MS.Internal.SilverlightTypeConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value) 
    at MS.Internal.Data.DefaultValueConverter.ConvertHelper(Object o, Type destinationType, CultureInfo culture, Boolean isForward) 
    at MS.Internal.Data.TargetDefaultValueConverter.Convert(Object o, Type type, Object parameter, CultureInfo culture) 
    at MS.Internal.Data.DynamicValueConverter.Convert(Object value, Type targetType, Object parameter, CultureInfo culture) 
    at System.Windows.Data.BindingExpression.ConvertValue(Object value, DependencyProperty dp, String failureResource). 

這裏是XAML

<converters:InverseBooleanToVisibilityConverter x:Key="InverseBoolToVisibility" /> 
<Grid Visibility="{Binding CategoryTitle, Converter={StaticResource InverseBoolToVisibility}, FallbackValue=True}"> 

酒店林勢必:

public bool CategoryTitle { get; set; } 

和轉換器本身

public class InverseBooleanToVisibilityConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return !(bool)value ? Visibility.Visible : Visibility.Collapsed; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     Visibility vis = (Visibility)value; 

     if (vis != Visibility.Visible) 
     { 
      return true; 
     } 

     return false; 
    } 
} 

回答

1
System.ArgumentException: Requested value 'True' was not found. 

這是因爲Visibility需要Visibility Enum類型。您正試圖在您的FallBackValue中爲此使用bool值。