Размер шрифта ресурса WPF - относительно другого ресурса - PullRequest
0 голосов
/ 07 марта 2011

Мой вопрос очень похож на Шаблон пользовательского элемента управления Wpf - относительный размер шрифта ... но я пытаюсь установить размер шрифта в одном ресурсе относительно другого ресурс . Я реализовал решение, опубликованное Томасом, но не могу понять, как заставить относительный источник указывать на другой ресурс.

            <my:MathConverter x:Key="MathConverter" />

            <Style x:Key="propertyText">
                <Setter Property="Control.Foreground" Value="Gray" />
                <Setter Property="Control.FontSize" Value="12" />
                <Setter Property="Control.Padding" Value="10,2,2,2" />
            </Style>

            <Style x:Key="headerText">
                <!-- I want this to be the same as propertyText +2 -->
                <Setter Property="Control.FontSize" Value="FontSize="{Binding
                 RelativeSource={RelativeSource AncestorType={x:Type Window}},
                 Path=FontSize,
                 Converter={StaticResource MathConverter},
                 ConverterParameter=2}" />
            </Style>

Вот линия, с которой у меня проблемы. Я хочу, чтобы он указывал на propertyText вместо:

                 RelativeSource={RelativeSource AncestorType={x:Type Window}},

Для полноты вот код для конвертера:

public class MathConverter : IValueConverter
{
    public object Convert( object value, Type targetType, object parameter, CultureInfo culture )
    {
        return (double)value + double.Parse( parameter.ToString() );
    }

    public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture )
    {
        return null;
    }
}

На основании ответа Маркуса Хюттера. Вот XAML для решения:

           <system:Double x:Key="baseFontSize">12</system:Double>
            <my:MathConverter x:Key="MathConverter" />
            <Style x:Key="propertyText">
                <Setter Property="Control.Foreground" Value="Gray" />
                <Setter Property="Control.FontSize" Value="{StaticResource ResourceKey=baseFontSize}" />
                <Setter Property="Control.Padding" Value="10,2,2,2" />
            </Style>

            <Style x:Key="headerText">
                <!-- I want this to be the same as propertyText +2 -->
               <Setter Property="Control.FontSize" 
                       Value="{Binding Source={StaticResource ResourceKey=baseFontSize},
                       Converter={StaticResource MathConverter},
                       ConverterParameter=2}" />
            </Style>

1 Ответ

2 голосов
/ 07 марта 2011

проще всего будет:

создать ресурс

<system:Double x:Key="propertyTextFontSize">12</system:Double>

и использовать StaticReference в установщиках, указывающих на этот ресурс, но второй с привязкой и преобразователем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...