IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

Modification de position d'un bouton sur Resize [Débutant]


Sujet :

Windows Presentation Foundation

  1. #1
    Membre actif Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Points : 221
    Points
    221
    Par défaut Modification de position d'un bouton sur Resize
    Bonsoir,

    J'ai actuellement une stackpanel avec différents boutons;
    Mon dernier bouton doit être toujours sur la droite quelque soit le resize de la form; Sous windows form, j'utilise les Anchors.

    Comment faire la même chose avec une window wpf?
    Merci de votre aide

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Bah aligne le StackPanel à droite... (HorizontalAlignment=Right)

    Ou alors précise ta question si ce n'est pas ça que tu cherches

  3. #3
    Membre actif Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Points : 221
    Points
    221
    Par défaut
    Ma question n'était pas clair, un peu comme mon esprit hier soir .

    Voici l'arborescence de ma window à peu de chose prêt.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dockpanel
    |
    |__Stackpanel (Dock= "Top", HorizontalAlignement = "strech" Width="auto" Orientation = "Vertical")
    |    |_BTN 0 ( HorizontalAlignement = "left" )
    |    |_Image ( HorizontalAlignement = "right" )
    |    |_BTN 1 ( HorizontalAlignement = "right" )
    |
    |___Grid
    J'aimerais lors d'un resize de la window que l'image et le BTN1 reste sur le coté droit de la fenêtre. Quand je programme sous Windows form, j'utilise la propriété Anchor de l'objet pour avoir ce comportement.

    Comment puis je faire pour avec ce comportement sur une fenêtre WPF?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par Masmeta Voir le message
    J'aimerais lors d'un resize de la window que l'image et le BTN1 reste sur le coté droit de la fenêtre.
    Normalement ça devrait déjà être le cas, si ta fenêtre est bien comme tu l'as décrite... Le StackPanel occupe toute la largeur de la fenêtre, et le bouton et l'image dans le StackPanel sont alignés à droite, donc ils devraient toujours être sur la droite de la fenêtre. Si ce n'est pas le cas, ta description ne doit pas être exacte... Poste le code XAML, on y verra plus clair

  5. #5
    Membre actif Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Points : 221
    Points
    221
    Par défaut
    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
     
        <DockPanel Height="Auto" Name="Main" Width="Auto">
     
            <StackPanel Height="148" Name="CtrlPanel" Width="Auto" DockPanel.Dock="Top"  Orientation="Horizontal"  HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0,0,0,0">
                <StackPanel.Background>
                    <VisualBrush Visual="{StaticResource TopBanner}" Stretch="UniformToFill" >
                    </VisualBrush>
                </StackPanel.Background>
                <Button Content="Start" Style="{StaticResource GlassButton}" Name="btnStart"  Height="96" Width="96"  />
                <Button Content="Stop" Style="{StaticResource GlassButton}" Name="btnStop"  Height="96" Width="96" />
                <Button Content="Calibration" Style="{StaticResource GlassButton}" Name="btnCalibration"  Height="96" Width="96"  Click="btnCalibration_Click" />
                <Button Content="Properties" Style="{StaticResource GlassButton}" Name="btnProperties"  Height="96" Width="96" />
                <Button Content="Snapshot" Style="{StaticResource GlassButton}" Name="btnCustomer"  Height="96" Width="96"   />
                <Button Content="Customer" Style="{StaticResource GlassButton}" Name="btnReport"  Height="96" Width="96"  Click="btnReport_Click">
                    <Button.Background>
                        <VisualBrush Visual="{StaticResource B1}" >
                        </VisualBrush>
                    </Button.Background>
                </Button>       
     
                <Image Height="150" Name="MyLogo" Stretch="Uniform" Width="402" HorizontalAlignment="Right" Margin="40,0,25,5"  >
                    <Image.Source>
                        <DrawingImage >
                            <DrawingImage.Drawing>
                                <GeometryDrawing  >
                                    <GeometryDrawing.Geometry>
                                        <RectangleGeometry 
                                        Rect="0,0,400,55" 
                                        RadiusX="0"
                                        RadiusY="0"/>
                                    </GeometryDrawing.Geometry>
                                    <GeometryDrawing.Brush>
                                        <VisualBrush
                                        Viewport="0,0,1,1"
                                        ViewboxUnits="RelativeToBoundingBox"
                                        Visual="{StaticResource Logo}"/>
                                    </GeometryDrawing.Brush>
                                </GeometryDrawing>
                            </DrawingImage.Drawing>
                        </DrawingImage>
                    </Image.Source>
                </Image>
                <Button  Content ="Close" Style="{StaticResource GlassButton}" Name="btnClose"  Height="96" Width="96" HorizontalAlignment="Right"  Click="btnClose_Click" Margin="0,20,10,0">
                    <Button.Background>
                        <VisualBrush Visual="{StaticResource Close}" >
                        </VisualBrush>
                    </Button.Background>
                </Button>
            </StackPanel>
            <Grid HorizontalAlignment="Stretch" Margin="0,0" Name="Workspace" VerticalAlignment="Stretch" Height="Auto" Width="Auto" Background="Transparent" DockPanel.Dock="Top" >
                <Grid.RowDefinitions>
                    <RowDefinition Height="64" />
                    <RowDefinition Height="64" />
                    <RowDefinition Height="64*" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="175" />
                    <ColumnDefinition Width="175" />
                </Grid.ColumnDefinitions>
            </Grid>
        </DockPanel>
    Je joins aussi le le code du style de bouton que j'ai commencé à créer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
     <Style x:Key="GlassButton" TargetType="{x:Type Button}">
     
            <Setter Property="FontFamily"  Value="Myriad Pro" />
            <Setter Property="FontSize"  Value="14" />        
            <Setter Property="Foreground" Value="White" />
            <Setter Property="Width" Value="90" />
            <Setter Property="Margin" Value="10,20,10,0" /> 
            <Setter Property="Template">
                <Setter.Value>    
                    <ControlTemplate TargetType="{x:Type Button}">
                        <Border   x:Name="ButtonBorder" 
                                  CornerRadius="10,10,10,10" 
                                  BorderThickness="4,4,4,4" 
                                  Background="#00000000"
                                  BorderBrush="#FF8F8F8F"
                                  RenderTransformOrigin="0.5,0.5"
                        >
                        <ContentPresenter x:Name="ButtonContentPresenter"
                                 VerticalAlignment="Bottom"  
                                 HorizontalAlignment="Center"
                        />  
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsPressed" Value="True">
                                <Setter Property="RenderTransform" TargetName="ButtonBorder">
                                    <Setter.Value>
                                        <TransformGroup>
                                            <ScaleTransform ScaleX="0.9" ScaleY="0.9"/>
                                        </TransformGroup>
                                    </Setter.Value>
                                </Setter>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
     
                </Setter.Value>
            </Setter>
        </Style>

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Bah ça me semble correct pourtant... Quel est le parent du DockPanel ?

  7. #7
    Membre actif Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Points : 221
    Points
    221
    Par défaut
    eh bien c'est la window.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <Window x:Class="MySln.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="800" Width="1280" Icon="/ressources/icon.ico"    WindowState = "Maximized" Loaded="Window_Loaded" AllowsTransparency="True" ResizeMode="NoResize" WindowStyle="None">

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Ce serait plus facile de résoudre ton problème si tu donnais des informations exactes . Tu avais dit que ton StackPanel avait une Orientation="Vertical", mais en fait dans ton code c'est "Horizontal"... ce qui change tout !

    Donc en fait c'est parfaitement normal que ça ne marche pas comme tu le souhaites. Le StackPanel n'est pas adapté pour ce que tu veux faire : il met juste les éléments les uns à la suite des autres, sans tenir compte de l'alignement horizontal (si orientation=horizontal) ou vertical (si orientation=vertical).

    Le plus simple c'est que à la place du StackPanel tu mettes ça :

    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition With="*" />
            <ColumnDefinition With="500" /> <!-- à ajuster -->
        </Grid.ColumnDefinitions>
        <StackPanel Grid.Column="0" Orientation="Horizontal">
            <!-- les boutons de gauche -->
        </StackPanel>
        <StackPanel Grid.Column="1" Orientation="Horizontal">
            <!-- l'image et le bouton de droite -->
        </StackPanel>
    </Grid>

  9. #9
    Membre actif Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Points : 221
    Points
    221
    Par défaut
    Je te remercie de ton aide. Je vais réalisé ton code.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modification d'un bouton sur clic
    Par Lyadrielle dans le forum Composants
    Réponses: 9
    Dernier message: 06/11/2013, 10h34
  2. Bloquer la position d'un bouton sur une feuille à l'impression
    Par benpinta dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/10/2007, 16h59
  3. Détruire un bouton sur son OnClick
    Par Volfoni dans le forum C++Builder
    Réponses: 5
    Dernier message: 08/06/2006, 12h00
  4. Réponses: 2
    Dernier message: 15/06/2005, 23h56
  5. Quatrième bouton sur la barre de titre d'une fenêtre
    Par Yacine95000 dans le forum MFC
    Réponses: 8
    Dernier message: 02/06/2004, 17h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo