いつもお世話になっています。
アプリケーション全体でフォントサイズを統一して変更したいと思い以下の様なResourceDictionaryを作り
App.xamlで読み込ませるという事をしています。
色々と検索をしてみましたが、どうにもキーワードが悪いのか、そのような需要がないのかそのものズバリ!な(または近しい)情報を
見つけることが出来なかったので、この方法で正しいのか分からないので、「あってるよ!」とか「違うから出直してこい!」
だけでも構いませんのでお教え下さい。
環境:Windows7、Visual Studio 2013、C# WPF、.NET Framework 4.5
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<!--Windowスタイル-->
<Style TargetType="Control">
<Setter Property="FontSize" Value="15"/>
</Style>
<!--DataGridスタイル-->
<Style TargetType="DataGrid" BasedOn="{StaticResource {x:Type Control}}">
<Setter Property="AutoGenerateColumns" Value="False"/>
<!--<Setter Property="FontSize" Value="15"/>-->
<Setter Property="SelectionMode" Value="Single"/>
<Setter Property="CanUserAddRows" Value="False"/>
<Setter Property="CanUserDeleteRows" Value="False"/>
<Setter Property="CanUserReorderColumns" Value="False"/>
<Setter Property="CanUserResizeRows" Value="False"/>
<Setter Property="CanUserSortColumns" Value="False"/>
</Style>
<!--Buttonスタイル-->
<Style TargetType="Button">
<!--<Setter Property="FontSize" Value="15"/>-->
</Style>
<!--ListBoxスタイル-->
<Style TargetType="ListBox" BasedOn="{StaticResource {x:Type Control}}">
<!--<Setter Property="FontSize" Value="15"/>-->
</Style>
</ResourceDictionary>
一応このような形になった私なりの考えとしては以下になります。
1. スタイルの継承をする場合はBaseOn属性を使う
2. 継承するためには同じ型or同じ型から派生した型のみが対象となる
3. アプリケーション全てに適用したいので、全ての親であるContorolクラスにフォントサイズを設定
4. フォントサイズを変更したいコントロールにBaseOnで継承する