none
Taille d'une fenêtre en utilisant "VisualState" RRS feed

  • Question

  • Bonjour dans un projet WPF j'aimerais pouvoir redimensionner les élément d'un Window en fonction de la propriété

    MinWindowWidth de celui-ci. En UWP j'utilise de code :

      <VisualStateManager.VisualStateGroups>
                <VisualStateGroup>
                    <VisualState x:Name="WideState">
                        <VisualState.StateTriggers>
                            <AdaptiveTrigger MinWindowWidth="1700"/>
                        </VisualState.StateTriggers>
                        <VisualState.Setters>
                            <Setter Target="ExcelPresentPage.FontSize" Value="28"/>
                            <Setter Target="ExcelImg.Height" Value="250"/>
                            <Setter Target="TxtB1.FontSize" Value="28"/>
                            <Setter Target="TxtB2.FontSize" Value="28"/>
                            <Setter Target="GridPresent.Width" Value="1000"/>
                        </VisualState.Setters>
                    </VisualState>
                    <VisualState x:Name="NarrowState">
                        <VisualState.StateTriggers>
                            <AdaptiveTrigger MinWindowWidth="1000"/>
                        </VisualState.StateTriggers>
                        <VisualState.Setters>
                            <Setter Target="ExcelPresentPage.FontSize" Value="20"/>
                            <Setter Target="ExcelImg.Height" Value="100"/>
                            <Setter Target="TxtB1.FontSize" Value="20"/>
                            <Setter Target="TxtB2.FontSize" Value="20"/>
                            <Setter Target="GridPresent.Width" Value="850"/>
                        </VisualState.Setters>
                    </VisualState>
                </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>

    Existe-il la même chose pour WPF ?


    JF Collombet ® CreateSpecificCulture

    samedi 1 avril 2017 07:53

Toutes les réponses

  • Bonjour Jean-François,

    D'après les recherches que j'ai effectué, il s'avère que oui. 

    En WPF il faut utiliser la méthode GoToElementState.

    Voici le lien : https://msdn.microsoft.com/fr-fr/library/system.windows.visualstatemanager.gotoelementstate(v=vs.110).aspx

    Cet article est également utile au cas où la méthode GoToState ne s'exécute pas : http://stackoverflow.com/questions/22273502/cannot-find-gotoelementstate-under-visualstatemanager-visualstatemanager-gotos

    J'espère que ces informations vous seront utiles.

    Vous pouvez me suivre sur Twitter : https://twitter.com/NordineMhoumadi


    Download my NEW FREE application MCP PREPARATION in the Windows 10 Store for preparing your Microsoft Certification or test your skills in Microsoft Technologies;

    samedi 1 avril 2017 09:31
  • Bonjour Nordine et merci pour ce lien. Mon soucis en fait est plus dans l'écriture du code xaml, en effet en WPF la notion "Adaptive Trigger" n'existe pas donc par quoi dois-je le remplacer ?

    JF Collombet ® CreateSpecificCulture

    samedi 1 avril 2017 11:21
  • J'ai trouvé ce code qui est presque parfait à ceci près que j'aimerais remplacé Path=ActualWidth par Path=MinWidth.

    Mais cela ne marche pas...

    <Window x:Class="TestDataTrigger.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:TestDataTrigger"
            mc:Ignorable="d"
            Title="MainWindow" Height="350" Width="500" x:Name="Page1">
        <Grid>
            <TextBlock Name="TB1">
                <TextBlock.Style>
                    <Style TargetType="TextBlock">
                        <Setter Property="Text" Value="No"/>
                        <Setter Property="FontSize" Value="20"/>
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding ElementName=Page1,Path=ActualWidth}" Value="800">
    
                                <Setter Property="Text" Value="yes"/>
                                <Setter Property="FontSize" Value="80"/>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </TextBlock.Style>
            </TextBlock>
        </Grid>
    </Window>


    JF Collombet ® CreateSpecificCulture

    samedi 1 avril 2017 12:03