2016-12-13 6 views
0

私はすべてのコンポーネントのスタイルを外部化しようとしているので、必要なときに再利用することができます。FontIconのローカルプロパティによるスタイルのオーバーライド

は私が私のFontIconにこのリソースを適用すると14

へのFontSizeセッターなど、いくつかの設定主体とMainMenuItemFontStyleという名前のリソースを持っている、スタイルは、いくつかのローカルパラメータによって上書き取得します。問題は、私はこれらのローカルパラメータを決して設定しないと、私はそれらを見つけることができないということです。

スタイルは、別のファイル(Styles.xaml)であり、次のようになります。

<FontIcon Grid.Column="0" Glyph="{Binding Icon}" Style="{StaticResource ResourceKey=MainMenuItemFontStyle}"/> 

そして、これがある:私はスタイルパラメータで、単にそれを呼ば

<Style x:Name="FontIconBase" TargetType="FontIcon"> 
    <Setter Property="FontFamily" Value="Segoe MDL2 Assets"/> 
</Style> 
<Style x:Name="MainMenuItemFontStyle" TargetType="FontIcon" BasedOn="{StaticResource ResourceKey=FontIconBase}"> 
    <Setter Property="FontSize" Value="14"/> 
    <Setter Property="VerticalAlignment" Value="Center"/> 
    <Setter Property="Foreground" Value="Black"/> 
</Style> 

プロパティエクスプローラから取得したもの:

Properties explorer

ご覧のとおり、私のスタイルはプレゼントですが、いくつかのローカルパラメータがあります。 MainContainerView.xamlへのリンクは、を指しています。前に表示されたFontIcon

私は間違ったやり方をしていますか?

ありがとうございました。

+0

あなたにもFontIconBaseスタイルを共有することができ –

+0

完了、それだけですFontFamilyプロパティへのセッター。 –

+0

MainContainerView.xamlからMainMenuItemFontStyleを削除する –

答えて

2

私は最近これも実際に気付いています。

FontIconクラスは、スタイル設定ツールより優先されるFontSize依存プロパティのローカル値として値20を設定しているようです。私はドキュメントをチェックしましたが、なぜそれがそうしているのか具体的な理由は言及していなかったので、バグかもしれません。依存関係プロパティのデフォルト値は、dependency property metadataで設定する必要があります。 Here's a link to a feedback hub post I madeに注意してください。

あなたは、特定のFontIconインスタンス上ClearValue(FontSizeProperty)を呼び出すことによってこの問題を解決する、またはそれをサブクラス化しFontIconの代わりにサブクラスを使用することができます。

public class FontIconFixed : FontIcon 
{ 
    public FontIconFixed() 
    { 
     ClearValue(FontSizeProperty); 
    } 
} 
+0

助けてくれてありがとう、サブクラスはトリックを行う。 残念ながら、あなたの投稿にアクセスすることはできません。 –

0

MainContainerView.xamlには、フォントサイズが20のスタイルMainMenuItemFontStyleもあると思います。したがって、Styles.xamlに書き込んだスタイルは上書きされています。

+0

私はそれをダブルチェックしました。スタイルは* Styles.xaml *ファイルで一度だけ宣言され、** FontIcon **コンポーネントで一度使用されました。 –

関連する問題