2016-08-18 45 views
-1

我需要顯示的圖標是這樣的:除了Button之外,哪些控件可以顯示WPF幾何圖標而不用定義Stroke或Fill?

<Geometry x:Key="Geometry.LeftArrow">M 6.5 0.5 L 7.5 1 L 7.5 0 L 6.5 0.5 z</Geometry> 

如果我把它們放在按鈕還可以吧。不過,我需要在其他許多地方展示他們,但他們沒有顯示。有時候定義Stroke/Fill會有幫助,但這是錯誤的。當主題/樣式改變時,我不想編制一些硬編碼和看起來很愚蠢的顏色。

這工作:

<Button> 
    <Path Data="{StaticResource Geometry.LeftArrow}" Stretch="Uniform" MaxHeight="12"/> 
</Button> 

這不:

<Label> 
    <Path Data="{StaticResource Geometry.LeftArrow}" Stretch="Uniform" MaxHeight="12"/> 
</Label> 

那麼這裏的邏輯和如何我剛纔告訴他們讓我們說未來的一些文本框?

+1

我試過這個,並沒有得到一個按鈕的默認填充或描邊。我的解決方案是定義一個默認的路徑樣式,將Fill(或Stroke,無論哪個)設置爲['{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}](https://msdn.microsoft.com/en-us/庫/ system.windows.systemcolors.controltextbrushkey(v = vs.110)的.aspx)。精心設計的主題應該使用這些SystemColors刷子鍵。如果主題設計不合理,則可以添加一些「填充」資源定義,這些定義將SystemColors畫筆鍵定義到適當的主題資源。 –

+0

謝謝!好。我認爲這是一些WPF的事情。我必須從樣式和圖標人員中找出爲什麼我不需要將它們設置爲Button,並且可以按照您的建議創建樣式。 –

+1

實現此目的的一種方法是在'Button'的默認樣式的'Style.Resources'部分爲'Path'設置默認樣式。如果你有風格和圖標的人,我羨慕你,是的,肯定與他們談論這件事。 –

回答

1

我試過這個,並沒有得到一個按鈕的默認填充或描邊。

我的解決方案是定義一個默認的Path樣式,它將Fill(或Stroke,無論哪個)設置爲{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}

<Style TargetType="Path"> 
    <Setter 
     Property="Fill" 
     Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" 
     /> 
</Style> 

精心設計的主題應該使用那些SystemColors刷鑰匙。如果主題設計不合理,則可以添加一些「填充」資源定義,這些定義將筆刷鍵定義爲適當的主題資源。

如果我想給Path默認填寫Button而不是在其他地方,我能做到這一點通過定義默認Path風格的資源,爲Button風格:現在

<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}"> 
    <Style.Resources> 
     <Style TargetType="Path"> 
      <Setter 
       Property="Fill" 
       Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" 
       /> 
     </Style> 
    </Style.Resources> 

    <!-- other stuff --> 
</Style> 

以及您與你的風格和偶像交談(如此,果凍;我們必須爲自己做那些事情),看起來這就是這裏發生的事情的本質。

相關問題