2012-08-17 59 views
0

我有一個小的WPF問題,我無法弄清楚。標籤前景資源

我試圖設置一個ResourceDictionary包含一些顏色,畫筆和ControlTemplate條目。

我的問題是,我正在嘗試將Label的前景畫刷設置爲同一文件中的資源,並且該位不工作,並且沒有跟蹤消息。

<Color x:Shared="false" x:Key="DefaultForegroundColor" A="255" R="0" G="0" B="0" /> 
<!--<Color x:Shared="false" x:Key="DefaultForegroundColor" A="255" R="255" G="0" B="0" />--> 
<SolidColorBrush x:Shared="false" x:Key="DefaultForegroundBrush" Color="{DynamicResource DefaultForegroundColor}"/> 

<Color x:Shared="false" x:Key="HeadingColor" A="255" R="17" G="158" B="218" /> 
<SolidColorBrush x:Shared="false" x:Key="HeadingBrush" Color="{DynamicResource HeadingColor}"/> 


<Style TargetType="{x:Type Label}" x:Key="SectionHeadingStyle"> 
    <Setter Property="FontSize" Value="18"/> 
    <Setter Property="Foreground" Value="{DynamicResource HeadingBrush}"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
     <ControlTemplate TargetType="Label"> 
      <Border BorderThickness="0,0,0,2" BorderBrush="{DynamicResource DefaultForegroundBrush}" HorizontalAlignment="Left"> 
       <ContentPresenter Margin="5"/> 
      </Border> 
     </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

邊框顏色工作正常(即使它不是黑色),但標籤的前景保持黑色,而不是淺藍色。任何想法我做錯了什麼?

謝謝。

UPDATE 忘了提及,它在設計師也看起來不錯。

UPDATE 2 在偵聽看來該Foreground顏色使得它最方式通過模板直到ContentPresenter使用TextBlock,顯示標題文本的可視化樹。 TextBlock保持黑色,而上面的ContentPresenter具有很好的藍色陰影,設置爲TextElement.Foreground。在模板中是否還有其他事情可以爲創建的TextBlock創建前景色?

回答

1

剛剛意識到我從來沒有關閉這個問題:

到底有庫在應用程序級進口資源。由於某些原因,這些導致與我的資源發生衝突,並且都沒有適用。將庫的資源移動到Window或UserControl級別解決了問題。

2

我看到了兩個可能的解決方案

您需要的資源StaticResource。例如,如果你改變刷到這一點,工作原理:

<SolidColorBrush x:Shared="false" x:Key="HeadingBrush" Color="{StaticResource HeadingColor}"/> 

或者,如果你在風格改變前景的StaticResource,它會工作。

另一種選擇是從筆刷和顏色中刪除x:Shared="false"。這也解決了這個問題。

<Color x:Key="HeadingColor" A="255" R="17" G="158" B="218" /> 
<SolidColorBrush x:Key="HeadingBrush" Color="{DynamicResource HeadingColor}"/> 

這似乎是與DynamicResource多層加上非共享的資源組合的問題。

+0

嗨Brian。我以前曾經將您的建議表單中的代碼更改爲在另一個(不正確)博客帖子後發佈的'x:Shared'和'DynamicResource'版本。不幸的是意味着我仍然沒有期望的結果。 – GlacialSpoon 2012-08-17 16:34:08

+0

@GlacialSpoon你想要的結果是什麼?我可以理解DynamicResources的需求(皮膚或其他?),但爲什麼不能共享? – 2012-08-17 17:43:58

+0

對不起Brian。爲了澄清,期望的結果是在運行時實際應用於標籤內容的樣式中的前景色。樣式將'HeadingColor'定義爲淡藍色,但結果內容始終爲黑色。在我目前的應用程序中,內容很可能是一個字符串,所以我認爲它會以前景色呈現文本。我對這種方法不感興趣,或者它是靜態的,動態的或其他的。我只是無法讓它爲我的文字着色! :(請說明是否仍然令人困惑 – GlacialSpoon 2012-08-17 23:05:42