WPF Content Presenter странное поведение горизонтального выравнивания - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь центрировать контент в Presenter Content в кнопке, он идеально центрируется в конструкторе Но при запуске он либо смещается на с центра , либо будетполучить отрезать .Что меня смущает, так это то, что у меня есть другой стиль, который делает то же самое, но работает отлично.

Вот стиль;

<Style x:Key="MainButtonStyle" TargetType="{x:Type Button}">
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
            <Setter Property="HorizontalContentAlignment" Value="Center"/>
            <Setter Property="VerticalContentAlignment" Value="Center"/>
            <Setter Property="Padding" Value="0,1"/>
            <Setter Property="RenderOptions.BitmapScalingMode" Value="NearestNeighbor"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                        <Grid x:Name="Chrome" Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
                            <Grid.BindingGroup>
                                <BindingGroup/>
                            </Grid.BindingGroup>
                            <Border x:Name="border" CornerRadius="3,3,3,3" BorderBrush="LightGray" BorderThickness="1" Background="#FFF3F3F3" Padding="0">
                                <ContentPresenter 
                                    HorizontalAlignment="Center"
                                    VerticalAlignment="Stretch"
                                    TextElement.FontWeight="Light" Height="Auto"  Margin="153.636,0.52,156,1.52" Width="Auto" UseLayoutRounding="False" SnapsToDevicePixels="False" >
                                </ContentPresenter>

                            </Border>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsPressed" Value="True">
                                <Setter Property="Background" TargetName="border" Value="#330CB3EE"/>
                            </Trigger>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="BorderBrush" TargetName="border" Value="#FF0CB3EE"/>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="False">
                                <Setter Property="Opacity" TargetName="Chrome" Value="0.25"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>

            </Setter>
        </Style>

1 Ответ

0 голосов
/ 11 июня 2018

Удалите поле из Content Presenter:

<ContentPresenter HorizontalAlignment="Center"
                  VerticalAlignment="Stretch"
                  TextElement.FontWeight="Light"
                  Height="Auto"

                  Width="Auto" 
                  UseLayoutRounding="False"
                  SnapsToDevicePixels="False" >

Возможно, это поле было добавлено дизайнером и соответствует макету элемента управления в конструкторе.

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