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

Silverlight Discussion :

Fenêtre redimentionnable bornée en Silverlight


Sujet :

Silverlight

  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Septembre 2009
    Messages : 17
    Par défaut Fenêtre redimentionnable bornée en Silverlight
    Bonjour à tous !

    Je vous expose mon problème : j'aimerais faire en sorte que mon application Silverlight se redimentionne automatiquement en fonction du navigateur (jusque là rien de bien compliqué).

    Mais : j'aimerai également qu'à l'aide de MinWidth, MinHeigth lorsque je réduits trop la fenêtre, l'application cesse de se réduire et que des ascenceurs apparaissent dans le navigateur.

    Pour l'instant j'ai réussi à le faire horizontalement mais pas moyen de le faire verticalement, lorsque je fais la même méthode (que horizontalement), les dimentions de la fenêtre se figent et plus rien n'est dynamique !

    Voici les trois parties de mon code :
    Tout d'abord mon très puissant XAML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <UserControl x:Class="SilverlightApplication3.Page"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
        <Grid x:Name="LayoutRoot" Background="Red" MinHeight="600" MinWidth="800" Margin="10">
            <StackPanel>
                <TextBlock x:Name="txt1"></TextBlock>
                <TextBlock x:Name="txt2"></TextBlock>
            </StackPanel>
        </Grid>
    </UserControl>
    Puis viens ma super page ASPX :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <body style="height:100%;margin:0;">
        <form id="form1" runat="server" style="height:100%;">
            <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
            <div style="position:absolute;z-index:10;top:0;left:0;">
                <asp:Silverlight ID="Xaml1" Windowless="true" runat="server" Source="~/ClientBin/SilverlightApplication3.xap" MinimumVersion="2.0.31005.0" Width="100%" Height="100%" />
            </div>
            <div style="position:absolute;z-index:0;top:0;left:0;">
                <img id="Size" height="10px" width="10px"/>
            </div>
        </form>
    </body>
    Et enfin le coeur du problème :
    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
     
        public partial class Page : UserControl
        {
            public Page()
            {
                InitializeComponent();
                this.SizeChanged += new SizeChangedEventHandler(Page_SizeChanged);
            }
     
            void Page_SizeChanged(object sender, SizeChangedEventArgs e)
            {
                //String largeur = HtmlPage.Document.Body.GetAttribute("clientWidth").ToString();
                //String hauteur = HtmlPage.Document.Body.GetAttribute("clientHeight").ToString();
     
                //System.Windows.Browser.HtmlElement size = HtmlPage.Document.GetElementById("Size");
                //System.Windows.Browser.HtmlElement plugin = HtmlPage.Plugin;
                //if (HtmlPage.IsEnabled)
                //{
                //    txt1.Text = largeur;
                //    txt2.Text = hauteur;
                //    if (Double.Parse(largeur) > this.LayoutRoot.MinWidth)
                //    {
                //        size.SetStyleAttribute("width", largeur);
                //        plugin.SetStyleAttribute("width", largeur);
                //    }
                //    else
                //    {
                //        size.SetStyleAttribute("width", this.LayoutRoot.MinWidth.ToString());
                //        plugin.SetStyleAttribute("width", this.LayoutRoot.MinWidth.ToString());
                //    }
                //    //if (Double.Parse(hauteur) > this.LayoutRoot.MinHeight)
                //    //{
                //    //    size.SetStyleAttribute("height", hauteur);
                //    //    plugin.SetStyleAttribute("height", hauteur);
                //    //}
                //    //else
                //    //{
                //    //    size.SetStyleAttribute("height", this.LayoutRoot.MinHeight.ToString());
                //    //    plugin.SetStyleAttribute("height", this.LayoutRoot.MinHeight.ToString());
                //    //}
                //}
     
                String largeur = HtmlPage.Document.Body.GetAttribute("clientWidth").ToString();
                String hauteur = HtmlPage.Document.Body.GetAttribute("clientHeight").ToString();
     
                System.Windows.Browser.HtmlElement plugin = HtmlPage.Plugin;
                if (HtmlPage.IsEnabled)
                {
                    txt1.Text = largeur;
                    txt2.Text = hauteur;
                    if (Double.Parse(largeur) > this.LayoutRoot.MinWidth)
                        plugin.SetStyleAttribute("width", largeur);
                    else
                        plugin.SetStyleAttribute("width", this.LayoutRoot.MinWidth.ToString());
                    if (Double.Parse(hauteur) > this.LayoutRoot.MinHeight)
                        plugin.SetStyleAttribute("height", hauteur);
                    else
                        plugin.SetStyleAttribute("height", this.LayoutRoot.MinHeight.ToString());
                }
     
            }
        }
    Le code contient 2 tests :
    - celui qui n'est pas commenté fonctionne si l'on commente le second "if else" qui concerne la hauteur et se fige si on le remet
    - celui qui est commenté est une autre tentative en simulant une image pour créer les ascenceurs

    Si quelqu'un a une idée...

    Merci en tout cas à ceux qui m'ont lu jusqu'au bout !!!

  2. #2
    Membre actif
    Inscrit en
    Avril 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 36
    Par défaut
    Depoussierage de poste en cours!

    La balise object est un composant html que tu peux donc decrire à l'aide de propriétés de style, donc il te suffit de décrire l'affichage de cette manière.

    Dans l'idée, tu définis ta balise object à 100% en width et height dans une div parent que tu peux styler comme tu le souhaites.

Discussions similaires

  1. Fenêtre modale pour WPF & Silverlight
    Par al2000 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 25/07/2012, 11h13
  2. redimentionnement de fenêtre
    Par _Michel dans le forum SDL
    Réponses: 8
    Dernier message: 18/04/2008, 23h22
  3. redimentionnement de la fenêtre
    Par godluck dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 04/07/2007, 11h25
  4. Réponses: 4
    Dernier message: 01/01/2007, 21h09
  5. Empêcher le redimentionnement des fenêtres ????
    Par almisuifre dans le forum C++Builder
    Réponses: 5
    Dernier message: 03/01/2005, 09h15

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