2016-08-18 4 views
-1

私はこのようなアイコンを表示する必要があります。ボタン以外のコントロールでは、ストロークまたは塗りつぶしを定義せずにWPFジオメトリアイコンを表示できますか?

<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> 

私はボタンに入れた場合、彼らは[OK]をしています。しかし、私は他の多くの場所でそれらを表示する必要がありますが、表示されていません。 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

私はこれを試しましたが、Pathはデフォルトの塗りつぶしやストロークをButtonに入れませんでした。私の解決策は、Fill(またはStrokeのいずれか)を['{DynamicResource {x:Static SystemColors.ControlTextBrushKey}} 'に設定するデフォルトのPath Styleを定義することです(https://msdn.microsoft.com/en-us/)ライブラリ/ system.windows.systemcolors.controltextbrushkey(v = vs.110).aspx)。うまく設計されたテーマでは、これらのSystemColorsブラシキーを使用する必要があります。テーマがうまく設計されていない場合は、適切なテーマリソースにSystemColorsのブラシキーを定義するいくつかの "shim"リソース定義を追加できます。 –

+0

ありがとう! OK。私はこれがWPFのものだと思った。私は、スタイルとアイコンの人々からButtonに設定する必要がない理由を見つけなければなりません。また、あなたが提案したようにスタイルを作成することもできます。 –

+1

これを実現する方法の1つは、 'Button'のデフォルトスタイルの' Style.Resources'セクションで 'Path'のデフォルトスタイルを持つことです。あなたがスタイルとアイコンの人々を持っているなら、私はあなたを羨ましく思います、そして、確かにこれについて彼らに話してください。 –

答えて

1

私はこれを試しましたが、Pathはデフォルトの塗りつぶしやストロークをButtonに入れませんでした。

私の解決策は、デフォルトのPathを定義することです。塗りつぶし(またはストロークのいずれか)を{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}に設定するスタイルです。

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

よく設計されたテーマは、これらのSystemColorsブラシキーを使用する必要があります。テーマがうまく設計されていない場合、適切なテーマリソースにSystemColorsブラシキーを定義するいくつかの "shim"リソース定義を追加できます。私はPathを与えたいと思った場合

は、デフォルトではButton記入ではなく、他の場所で、私はButtonスタイルのためのリソースに、デフォルトPathスタイルを定義することによってそれを行うことができます:今

<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> 

とをあなたがしたことあなたのスタイルとアイコンの人々に話したので(ゼリー、私たちは自分自身のためにそれをしなければならない)、それはここで起こっていることの本質であるように見えます。

関連する問題