Я сделал это с помощью IValueConverter следующим образом:
Создан класс FontSizeConverter, производный от IValueConverter. Метод 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>
И Finnaly, привязка 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>
Это работает. Но я до сих пор не знаю, правильный ли это ответ. Дайте мне знать, если есть лучший способ, или если это уместно.