2013-04-22 53 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