5 votes

Bordure de la grille / Écart entre les cellules

J'ai créé un ControlTemplate qui contient un Grid avec deux rangées.

Malheureusement, il semble y avoir un écart d'un pixel entre les cellules.

Comment supprimer l'écart ?

Voici une capture d'écran montrant l'écart :

Gap between cells

...et voici le XAML :

<Window x:Class="MAQButtonTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="695" Width="996">        
    <Window.Resources>
        <Style TargetType="TextBlock">
            <Setter Property="OverridesDefaultStyle" Value="True"/>
        </Style>
        <ControlTemplate TargetType="Button" x:Key="ButtonTemplate">
            <Grid Width="444" Margin="0" ShowGridLines="False">
                <Grid.RowDefinitions>
                    <RowDefinition Height="51" />
                    <RowDefinition Height="36" />
                </Grid.RowDefinitions>
                <Grid Grid.Row="0" Background="#286c97">
                    <TextBlock>This is the first piece of text</TextBlock>
                </Grid>
                <Grid Grid.Row="1" Background="#5898c0">
                    <ContentPresenter Grid.Row="0" />
                </Grid>
            </Grid>
        </ControlTemplate>
    </Window.Resources>
    <Grid>

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="300" />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid Grid.Column="0" Background="#e9f1f6"></Grid>
        <Grid Grid.Column="1" Background="#d2e3ed">
            <StackPanel>
                <TextBlock FontFamily="Segoe UI" FontSize="22" FontWeight="Medium" Margin="52,58,0,0" Foreground="#0c3d5d">Your Quizzes <TextBlock FontFamily="Segoe UI" FontSize="18" FontWeight="Medium" Foreground="#0c3d5d">(7)</TextBlock></TextBlock>
                <Grid Margin="0,20,0,0">
                    <Button Width="444" Background="{x:Null}" BorderThickness="0" Template="{StaticResource ButtonTemplate}" Click="DoSomething" BorderBrush="#032135">
                        <TextBlock Margin="6,2.8,0,0" FontFamily="Segoe UI" FontSize="19" Foreground="#032135" FontWeight="Medium">This is a second piece of text</TextBlock>
                    </Button>
                </Grid>
            </StackPanel>
        </Grid>

    </Grid>
</Window>

8voto

Bilal Hashmi Points 696

Il suffit d'ajouter SnapsToDevicePixels="Vrai" dans la grille de votre modèle

<ControlTemplate TargetType="Button" x:Key="ButtonTemplate">
                <Grid Width="444" Margin="0" ShowGridLines="False" SnapsToDevicePixels="True">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="51" />
                        <RowDefinition Height="36" />
                    </Grid.RowDefinitions>
                    <Grid Grid.Row="0" Background="#286c97">
                        <TextBlock>This is the first piece of text</TextBlock>
                    </Grid>
                    <Grid Grid.Row="1" Background="#5898c0">
                        <ContentPresenter Grid.Row="0" />
                    </Grid>
                </Grid>
            </ControlTemplate>

2voto

trimeyko Points 129

Définir

SnapsToDevicePixels="True"

Sur les grilles dans le modèle ou le bouton, mais il vaut mieux créer un nouveau style avec le paramètre SnapsToDevicePixels="True" et le modèle dans le style.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X