【问题标题】:The TypeConverter for "FontWeight" does not support converting from a string“FontWeight”的 TypeConverter 不支持从字符串转换
【发布时间】:2012-08-13 19:57:07
【问题描述】:

安装 Visual Studio 2012 并打开 Silverlight 5 项目后,我遇到了各种与 TypeConverter 相关的设计时错误,例如:

“FontWeight”的 TypeConverter 不支持从字符串转换。

"Point" 的 TypeConverter 不支持从字符串转换。

“Thickness”的 TypeConverter 不支持从字符串转换。

不过,这并不是一份详尽的清单。

以下示例:

<Setter Property="FontWeight" Value="Bold" />

<RadialGradientBrush GradientOrigin="0.5,0.5"> ...

<Setter Property="Padding" Value="0" />

我在这里遗漏了什么明显的东西,还是这是一个错误?

【问题讨论】:

  • 我也得到了这个 - 项目构建和执行都很好,但是这些消息非常烦人,因为它们使 XAML 代码视图变得混乱。
  • 我有 2012 年,但我不明白,我不知道你为什么会 - 听起来像一个错误。然而,我在 SL4 工作......可能是 SL5 的事情。
  • msdn.microsoft.com/en-us/library/cc645047(v=vs.95).aspx 您的解决方案是否定义了任何类型转换器,或者这是指内置库转换器?如果您定义了自己的转换器,请确保它们实现 CanConvertFrom(ITypeDescriptorContext, Type) 并返回 true。如果错误消息是关于框架/库转换器的,那么您可能链接了旧版 dll。你有没有在只安装过 VS2012(不是 2010)的新机器上试过这个?这种情况发生在全新的 SL5 项目中还是仅在 2010 年创建的现有项目中?
  • 我没有定义任何我自己的类型转换器。
  • 哎呀,编辑我上面的评论太慢了:我已经确认我只引用了最新的 SL5 框架 dll。这也出现在我同事的新机器上,只安装了2012。我的项目最初是在 VS2010 (SL4) 中创建的,并在切换到 VS2012 之前的某个时间升级到 SL5。全新的项目似乎不会发生这种情况。

标签: .net silverlight xaml visual-studio-2012 typeconverter


【解决方案1】:

我有同样的问题:在资源部分定义

<UserControl.Resources>
  <local:MyConverter x:Key="myConverter"/>
</UserControl.Resources>

在 XAML UE 中,我不得不改变

...Width="{Binding BindingProperty, Converter=myConverter}"...

...Width="{Binding BindingProperty, Converter={StaticResource myConverter}..."

【讨论】:

  • 我所有的转换器都已经被 StaticResource 引用了,所以很遗憾这对我来说不是一个修复方法。
【解决方案2】:

遇到一个类似的问题:

The TypeConverter for "Thickness" does not support converting from a string

此 XAML 文件中未使用任何转换器

这是一个从 SL4 转换为 SL5 的 Silverlight 项目(Prism)。但似乎还有更多的事情发生,我也收到这样的错误:

The specified value cannot be assigned to the collection. The following type was expected: "Inline".

当这样使用TextBlock时:

&lt;TextBlock&gt;Hello&lt;/TextBlock&gt;

要消除该错误:

&lt;TextBlock Text="Hello" /&gt;

启动应用程序查看XAML更改的结果有点麻烦

【讨论】:

  • 像往常一样,Windows 文档对此缺乏示例。我放弃了,只是将我想要的属性添加到我的课程中,因此不再需要转换器。当有解决方法时,没有理由再浪费时间了。
【解决方案3】:

我遇到了同样的问题,这让我发疯了!对我来说,这与 Silverlight 工具包有关,一旦我添加了这些错误,我就开始遇到大量此类错误。

在我的项目文件(右键单击->编辑项目文件)中,我引用了这样的工具包 dll(在我的情况下,相对于源目录):

<Reference Include="System.Windows.Controls.Toolkit">
    <HintPath>..\..\..\Bin\System.Windows.Controls.Toolkit.dll</HintPath>
</Reference>

将其更改为此似乎对其进行了排序(我不确定是否也需要内部,但添加了 SL5 和工具包的新项目似乎对其进行了引用):

<Reference Include="system.windows.controls.toolkit, Version=5.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
<Reference Include="System.Windows.Controls.Toolkit.Internals, Version=4.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />

希望对您有所帮助, 约翰

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 2016-03-23
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多