Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Label междустрочный интервал


Автор: Geniy00 28.6.2011, 14:35
Добрый день
Столкнулся с проблемой в WPF
Помогите изменить или вообще удалить междустрочный интервал в Label или TextBox


user posted image

Шрифт для Label не имеет никаких свойст и методов которые подошли бы.

Единственное что нашел для шрифта, это FontFamily.LineSpacing которое почему то не могу установить.

Автор: exBlender 28.6.2011, 15:28
<Label Content="Label" Padding="5,0"/>

Автор: Geniy00 28.6.2011, 15:42
Цитата(exBlender @ 28.6.2011,  15:28)
<Label Content="Label" Padding="5,0"/>

это не подходит.

Проблема в том, что это настройки самого шрифта.
если Label будет меньше чем сам шрифт, то текст просто обрежится
user posted image

Автор: Экскалупатор 28.6.2011, 15:53
Geniy00, Padding - это просто отступ внутри от края. поставь 0

Автор: Geniy00 28.6.2011, 16:13
Цитата(Экскалупатор @ 28.6.2011,  15:53)
Geniy00, Padding - это просто отступ внутри от края. поставь 0

Код

        <Label Grid.Row="1" FontFamily="Times New Roman" FontSize="130" Padding="0"
               BorderBrush="Black" BorderThickness="3" Height="110" >
            1245aA
        </Label>


Результат следующий:
user posted image

Снизу можно обрезать путем установки размера Height для Label в меньшее значение.
А вот пространство сверху не могу убрать

Автор: exBlender 28.6.2011, 16:17
Цитата(Geniy00 @ 28.6.2011,  08:42)
Цитата(exBlender @ 28.6.2011,  15:28)
<Label Content="Label" Padding="5,0"/>

это не подходит.

Проблема в том, что это настройки самого шрифта.
если Label будет меньше чем сам шрифт, то текст просто обрежится


Насколько я знаю, WPF не может менять свойства шрифта, только свойства параграфа, т.е сделать высоту текстового блока ниже минимально положенной не удастся. 
Делать высоту Label меньше, чем высота TextBlock'a - вообще-то, задумка странная, но если сильно надо, придется менять темплейт, задавая ContentPresenter отрицательные Margin:
Код

<Style TargetType="{x:Type Label}">
           <Setter Property="Padding" Value="5,0"/>
            <Setter Property="ContentPresenter.Margin" Value="0,-3"/>
            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="HorizontalContentAlignment" Value="Left"/>
            <Setter Property="VerticalContentAlignment" Value="Top"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Label}">
                        <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" 
Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
                            <ContentPresenter Margin="{TemplateBinding ContentPresenter.Margin}"
                            HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>



Автор: Geniy00 28.6.2011, 17:19
exBlender, 
Большое спасибо

Код работает

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)