我正在使用Windows Phone 7.1应用程序。
我有一个UserControl
,它有一堆Silverlight子控件。大多数这些子控件的字体大小可以与所述UserControl的主机的字体大小相同(无论如何都将从主机继承)。
但是对于其中一个子控件,我想将FontSize设置为UserControl的FontSize的一半。如果主机的FontSize发生变化,我希望它能够更新。
但是现在在UserControl设计期间,由于没有主机,我无法完成这项工作。执行0.5*FontSize
之类的操作会导致FontSize的某些默认值,并且在FontSize更改时不会更新。
我应该做些什么才能让它发挥作用?
答案 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");
}
}