【发布时间】:2011-01-03 02:12:08
【问题描述】:
如下所示的转换器将导致 2008 Visual Studio Designer 不显示 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;
}
}
我的问题是,Visual Studio 设计器的 wtf 有问题吗?而且,有没有更好的方法将这些对象投射到它们对应的 Enum 中,这样设计者就不会出错?
【问题讨论】:
-
"wtf 是不是 Visual Studio 设计器有问题?"我有一个列表,但是这个 Internet 太小,无法包含它。
-
你能在你使用这个转换器的地方发布 XAML 吗?
标签: c# wpf visual-studio visual-studio-2008