次のようにIValueConverterでそれを行いました:
IValueConverter から派生するクラス FontSizeConverter を作成しました。Convert メソッドは値に 10 を加算し、ConvertBack メソッドは 10 を減算します。
public class FontSizeConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return (double)value + 12.0;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return (double)value - 12.0;
}
#endregion
}
次に、コントロールの XAML テンプレートでこのクラスのインスタンスを宣言しました。
<Style.Resources>
<local:FontSizeConverter x:Key="fontSizeConverter"/>
</Style.Resources>
最後に、FontSize バインディングは、継承された FontSize プロパティに適用されるこのコンバーターを使用します。
<TextBlock FontSize="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=FontSize, Converter={StaticResource fontSizeConverter}}"
Grid.Row="0" Text="{Binding RelativeSource={RelativeSource TemplatedParent},
Path=Date.Day}" HorizontalAlignment="Right" VerticalAlignment="Top" Padding="2" Margin="2" >
</TextBlock>
これは機能します。しかし、これが正しい答えかどうかはまだわかりません。もっと良い方法があるか、またはこれが適切かどうか教えてください。