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 :

Redimensionnement automatique des polices


Sujet :

Windows Presentation Foundation

  1. #1
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut Redimensionnement automatique des polices
    Salut à tous,

    Je me mets à WPF, je dois dire que je suis surpris que le switch depuis Winforms n'est pas si difficile une fois qu'on a oublié comment on faisait avant.
    Je me pose une question par rapport à la création de mes contrôles. Je suis en train de créer une sorte de vue calendaire (style outlook) avec les jours du mois disposés en cases dans un tableau.
    J'ai un user control qui contient le layout global (une grid de 7*6 sans compter les headers).
    J'ai un deuxième user control qui représente une case de cette grille, il contient le jour, et les tâches de la journée.
    La liste de tâches est affichée grâce à une ListBox.

    Voila enfin la question
    Est-il possible de redimensionner automatiquement la taille de la police des items de la listbox proportionnellement à la taille de la listbox ?
    De cette manière, plus la listbox est petite, plus la police diminue, et inversement.

    Merci
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    ca m'interresse aussi, d'ailleurs c'est une fonctionnalité sympa de flash que j'ai pas vraiment retrouvé sur wpf (a moins de vectorriser les police en path - enfin je croive )
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
    http://ultimatecorp.eu/wpf/

  3. #3
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    ViewBox est ton ami

    Dans le style du ListBox, tu peux utiliser la ViewBox pour obtenir cet effet :
    Code xml : 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
        <Style TargetType="{x:Type ListBox}">
          <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/>
          <Setter Property="BorderBrush" Value="{StaticResource ListBorder}"/>
          <Setter Property="BorderThickness" Value="1"/>
          <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
          <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
          <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
          <Setter Property="ScrollViewer.CanContentScroll" Value="true"/>
          <Setter Property="VerticalContentAlignment" Value="Center"/>
          <Setter Property="Template">
            <Setter.Value>
              <ControlTemplate TargetType="{x:Type ListBox}">
                <Viewbox>
                  <Border SnapsToDevicePixels="true" x:Name="Bd" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="1">
                    <ScrollViewer Focusable="false" Padding="{TemplateBinding Padding}">
                      <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                    </ScrollViewer>
                  </Border>
                </Viewbox>
                <ControlTemplate.Triggers>
                  <Trigger Property="IsEnabled" Value="false">
                    <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
                  </Trigger>
                  <Trigger Property="IsGrouping" Value="true">
                    <Setter Property="ScrollViewer.CanContentScroll" Value="false"/>
                  </Trigger>
                </ControlTemplate.Triggers>
              </ControlTemplate>
            </Setter.Value>
          </Setter>
        </Style>

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Merci mais... erf, j'aurais préféré que tu me donnes la logique derrière le ViewPort plutôt qu'un style tout fait
    J'ai tenté d'utiliser ton style, mais il m'affiche un minuscule listbox centré alors que j'aimerais simplement que la police de mes éléments diminue quand je réduis la fenêtre. En gros, il faudrait que la police oscille entre la valeur définie par défaut et une valeur minimale en fonction de la taille de la fenêtre.
    Je m'étais peut-être mal exprimé au départ.

    Encore merci.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    En fait, j'avais en tête que ta ListBox était "encrée" et allait donc s'agrandir lorsque la case s'agrandit. Un exemple de ce que je pensais :

    Code xml : 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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    <Window 
      x:Class="WpfApplication1.Window1"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Title="Window1" Height="300" Width="600"
      >
     
      <Window.Resources>
     
        <SolidColorBrush x:Key="ListBorder" Color="#828790"/>
        <SolidColorBrush x:Key="ForegroundColor" Color="White"/>
     
        <LinearGradientBrush x:Key="ListBoxBackground" EndPoint="0,1" StartPoint="0,0">
          <GradientStop Color="#626262" Offset="1"/>
          <GradientStop Color="#4c4c4c" Offset="0"/>
        </LinearGradientBrush>
     
        <Style TargetType="{x:Type ListBox}">
          <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/>
          <Setter Property="BorderBrush" Value="{StaticResource ListBorder}"/>
          <Setter Property="BorderThickness" Value="1"/>
          <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
          <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
          <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
          <Setter Property="ScrollViewer.CanContentScroll" Value="true"/>
          <Setter Property="VerticalContentAlignment" Value="Center"/>
          <Setter Property="Template">
            <Setter.Value>
              <ControlTemplate TargetType="{x:Type ListBox}">
                <Viewbox>
                  <Border SnapsToDevicePixels="true" x:Name="Bd" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="1">
                    <ScrollViewer Focusable="false" Padding="{TemplateBinding Padding}">
                      <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                    </ScrollViewer>
                  </Border>
                </Viewbox>
                <ControlTemplate.Triggers>
                  <Trigger Property="IsEnabled" Value="false">
                    <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
                  </Trigger>
                  <Trigger Property="IsGrouping" Value="true">
                    <Setter Property="ScrollViewer.CanContentScroll" Value="false"/>
                  </Trigger>
                </ControlTemplate.Triggers>
              </ControlTemplate>
            </Setter.Value>
          </Setter>
        </Style>
     
      </Window.Resources>
     
      <Grid x:Name="MainGrid" >
        <Grid.ColumnDefinitions>
          <ColumnDefinition/>
          <ColumnDefinition/>
        </Grid.ColumnDefinitions>
     
        <ListBox x:Name="ListBox1" Grid.Column="0" Margin="5" >
          <ListBoxItem>item 1</ListBoxItem>
          <ListBoxItem>item 2</ListBoxItem>
          <ListBoxItem>item 3</ListBoxItem>
        </ListBox>
     
        <ListBox x:Name="ListBox2" Grid.Column="1" Margin="5" >
          <ListBoxItem>item 1</ListBoxItem>
          <ListBoxItem>item 2</ListBoxItem>
          <ListBoxItem>item 3</ListBoxItem>
        </ListBox>
     
      </Grid>
     
    </Window>

    Pour ton besoin :
    Citation Envoyé par SaumonAgile
    il faudrait que la police oscille entre la valeur définie par défaut et une valeur minimale en fonction de la taille de la fenêtre.
    Il faut d'avantage réfléchir (trop dur ). Peut faut-il regarder du côté de ScaleTransform et faire un binding savant avec converter...

    Nb: pour le style, c'est le style par défaut du listbox (enfin je crois) dans lequel j'ai inséré le ViewBox. C'est juste pour montrer où le placer.

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Merci.

    Etant donné que c'est un proto et que je n'ai pas vraiment le temps de passer sur tous les détails, je marque en résolu car ta méthode initiale est une bonne piste.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

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

Discussions similaires

  1. Redimensionnement automatique des controls dans un userform
    Par patricktoulon dans le forum Général VBA
    Réponses: 81
    Dernier message: 08/10/2019, 16h48
  2. Réponses: 8
    Dernier message: 25/04/2011, 19h30
  3. Redimensionnement automatique des composants d'une feuille
    Par Delbeke dans le forum Vos contributions VB6
    Réponses: 3
    Dernier message: 07/06/2007, 14h15
  4. Probleme redimensionnement automatique des composants
    Par catwomanette dans le forum Interfaces Graphiques en Java
    Réponses: 15
    Dernier message: 07/02/2007, 10h29
  5. Redimensionnement automatique des pages
    Par fricazoide dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 29/12/2006, 09h29

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