Преобразование WPF вызывает исключение конструктора Visual Studio
Конвертер, такой как приведенный ниже, приведет к тому, что дизайнер Visual Studio 2008 не будет отображать xaml и выдает ошибку "Указанный состав недействителен. " исключение.
public class ItemsVisibilityToGridColumnWidthConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
//THE TWO OFFENDING LINES...
var itemsVisibility = (Visibility)values[0];
var orientation = (Orientation)values[1];
if (orientation == Orientation.Horizontal && itemsVisibility != Visibility.Visible)
{
return new GridLength(0);
}
return new GridLength(4, GridUnitType.Star);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Изменение актерского состава для использования такого метода решает проблему:
static class EnumCaster
{
internal static Orientation CastAsOrientation(object value)
{
if (value is Enum)
{
return (Orientation)value;
}
return Orientation.Horizontal;
}
internal static Visibility CastAsVisibility(object value)
{
if (value is Enum)
{
return (Visibility)value;
}
return Visibility.Visible;
}
}
У меня вопрос, что WFF не так с дизайнером Visual Studio? И есть ли лучший способ привести эти объекты в соответствующие им Enum таким образом, чтобы дизайнер неПриступает? "