Как получить значение унаследованного свойства FontSize в UserControl? - PullRequest
0 голосов
/ 05 ноября 2011

Я работаю над приложением Windows Phone 7.1.У меня есть UserControl, который имеет несколько дочерних элементов управления Silverlight.Размеры шрифта для большинства этих дочерних элементов управления могут быть такими же, как у хоста указанного UserControl (который в любом случае будет наследоваться от хоста).

Однако для одного из дочерних элементов управления я хочу установить FontSize равным половине FontSize элемента UserControl.И я хочу обновить его, если FontSize хоста изменится.Но сейчас, во время разработки UserControl, поскольку хоста нет, я не могу заставить эту работу работать.Выполнение чего-то вроде 0.5*FontSize приводит к некоторому значению по умолчанию FontSize и не обновляется при изменении FontSize.

Что мне делать, чтобы это работало?

1 Ответ

2 голосов
/ 05 ноября 2011

Вы можете привязать свое свойство FontSize к свойству FontSize вашего UserControl и использовать преобразователь для определения соотношения.

Вот пример с текстовым блоком на странице:

<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");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...