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



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

然而,对于其中一个子控件,我想将FontSize设置为UserControl的FontSize的一半。我想让它在主机的字体大小改变时更新。但是现在在UserControl设计期间,由于没有主机,我无法完成这项工作。做0.5*FontSize之类的事情会导致FontSize的一些默认值,并且当FontSize更改时它不会更新。

我该怎么做才能让它起作用?

您可以将您的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");
    }
}

最新更新