如何在UserControl中获取继承的FontSize属性的值?

时间:2011-11-05 18:21:55

标签: wpf silverlight windows-phone-7

我正在使用Windows Phone 7.1应用程序。 我有一个UserControl,它有一堆Silverlight子控件。大多数这些子控件的字体大小可以与所述UserControl的主机的字体大小相同(无论如何都将从主机继承)。

但是对于其中一个子控件,我想将FontSize设置为UserControl的FontSize的一半。如果主机的FontSize发生变化,我希望它能够更新。 但是现在在UserControl设计期间,由于没有主机,我无法完成这项工作。执行0.5*FontSize之类的操作会导致FontSize的某些默认值,并且在FontSize更改时不会更新。

我应该做些什么才能让它发挥作用?

1 个答案:

答案 0 :(得分:2)

您可以将FontSize属性绑定到UserControl的FontSize属性,并使用转换器来执行此比率。

以下是页面内有文本块的示例:

<TextBlock FontSize="{Binding ElementName=MyPage, Path=FontSize, 
 Converter={StaticResource FontSizeConverter}}" 
 Text="any text" />

转换器(在App.xaml文件中声明为资源:

public class FontSizeConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var valueToConvert = value == null ? 0 : System.Convert.ToDouble(value);

        return valueToConvert * 0.5;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException("no use");
    }
}