gpt4 book ai didi

c# - WPF 转换器转换导致 Visual Studio 设计器异常

转载 作者:太空狗 更新时间:2023-10-29 22:05:58 24 4
gpt4 key购买 nike

如下所示的转换器将导致 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;
}
}

我的问题是,wtf 是不是 Visual Studio 设计器有问题?并且,是否有更好的方式将这些对象转换为它们相应的 Enum,从而使设计者不致于出错?

最佳答案

我认为这可能会发生,因为在某些时候,调用转换器时使用了错误的参数。您可以按照以下步骤在设计器中调试调用转换器:

  • 启动一个新的 Visual Studio 实例
  • 附加到第一个 VS 实例(工具 -> 附加到进程)
  • 打开转换器源文件
  • 在Convert方法中打断点
  • 在第一个 VS 实例中重新加载 WPF 设计器

那样你应该能够检查传递给转换器的参数

关于c# - WPF 转换器转换导致 Visual Studio 设计器异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2030651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com