2013-04-22 75 views
1

我试图管理VS2012中内置的Silverlight 5应用程序中的资源。主题化的目的,我在我的各种自定义模板掏出所有的颜色代码,并把它们转移到一个单独的资源文件,使他们能够独立于主模板被改变。Silverlight - 管理颜色资源 - 错误

我已经声明它们如下:

<Color x:Name="ButtonForeground">#FFFFFF</Color> 
<Color x:Name="ButtonBackground">#004760</Color> 
<Color x:Name="ButtonAltBackground">#0089B7</Color> 

虽然这个建造和运行正常,这些线有两个“错误”是拿出每当我生成项目:

  • 不能添加内容类型的对象“颜色”,而处理初始化字符串“#ColorCode”遇到
  • 的TypeConverter语法错误。在通过TypeConverter创建的对象上不允许使用元素属性。

在定义了30种颜色的情况下,即使项目的构建和运行良好,在错误列表窗口中也有60个构建错误,并且这会在实际出现错误时减损。

这也会导致我的颜色ResourceDictionary无法被引用,因为它们无法找到带有颜色的主题文件,并且因为依赖它们的字典不起作用, m无法依次引用它们,所以我的模板都找不到。 (这是导致另一个错误,超过100不停止应用程序构建和运行)

为什么这些错误在这里,什么我需要做的,让他们离开任何人都可以向我解释?

更新:我也曾尝试使用下面的方法,它具有与XAML没有问题,至于资源字典关注的作品,但在运行时抛出异常:

<Color x:Name="ButtonForeground" R="255" G="255" B="255"><!--#FFFFFF--></Color> 
<Color x:Name="ButtonBackground" R="0" G="71" B="96"><!--#004760--></Color> 
<Color x:Name="ButtonAltBackground" R="0" G="137" B="183"><!--#0089B7--></Color> 

这看起来与此处发布的错误有关:Silverlight XAML BUG

更新2: 我已经尝试了以下两种方法,两种方法工作,但注释掉的版本会导致错误,并且因为这个原因我删除了它。

<VisualState x:Name="Normal"> 
<Storyboard> 
    <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Background" Storyboard.TargetName="BtnBorder"> 
     <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonBackgroundBrush}"/> 
    </ObjectAnimationUsingKeyFrames> 
    <!--<ColorAnimation Duration="0:0:0.1" To="{StaticResource ButtonBackgroundColor}" Storyboard.TargetProperty="Color" Storyboard.TargetName="RbBorderBackground"/>--> 
</Storyboard> 

活节直接指向一个边界对象,并使用它的画笔属性,注释掉版本指向由边境使用的画笔,并使用颜色属性。已注释的版本动画顺利,看起来不错,目前的版本只是立即刷掉画笔。

感谢

特里斯坦

回答

1

你有用户X:键,而不是X:名称资源。 当您具有x:Name属性而不是x:Key时,会发生转换错误。

<Color x:Key="ButtonForeground">#FFFFFFFF</Color> 

x:Key用于资源字典内识别资源,而x:Name用于命名元素(网格,控制等)...

+0

Arg。完成新手错误:( – Tristan 2013-04-26 11:19:06

+0

犯错误的好处是你从他们那里学习:D – Tonio 2013-04-26 12:40:43