ASP.NET Zone

Die ASP.NET Community. Alle Antworten rund um Microsoft® Webtechnologien
Willkommen bei ASP.NET Zone. Anmelden | Registrieren | Hilfe | Impressum | ASP.NET Zone Suchplugin

in
Home Blogs Foren FAQ Communities Fotos Downloads
Werbeanzeige

Größe dynmaisch anpassen

Letzter Beitrag 01-30-2012, 9:08 von Failur3. 1 Antworten.
Beiträge sortieren: Zurück Weiter
  •  01-25-2012, 11:38 223691

    Größe dynmaisch anpassen

    Hey ich habe eine Fertige Silverlight Application. Nun würde ich gerne dafür sorgen das die Größe sich dynamisch den Browser anpasst. Ich habe schon eine Menge gefunden, aber ich komme immoment nicht weiter.

    Die größe des Plugins kann ich mit folgenden Methoden ändern:
      HtmlElement silverlightPlugin = HtmlPage.Plugin;
            void SetDimensionPixelValue(string style, double value)
            {
                silverlightPlugin.SetAttribute(style, ((int)Math.Round(value)).ToString() + "px");
            }
            void MainPage_SizeChanged(object sender, SizeChangedEventArgs e)
            {
                double height = ActualHeight;
                double width = ActualWidth;
                SetDimensionPixelValue("width", width);
                SetDimensionPixelValue("height", height);
            }

    Die SizeChanged Methode wird bei mir komischer weise nicht mehr aufgerufen wenn ich die Größe des Browser änder. Das war mal anders, sie wurde aufgerufen, leider weiß ich nicht mehr welche Schritte ich gemacht habe. Aber das krieg ich wieder raus, also daran soll es nicht liegen. ^^
    Als bsp habe ich nun einen Doppelklick implementiert auf das Layout, in diesen wird die größe auf Vollbild geändert.
    Nun will ich erreichen das sich alle Elemente dynamisch anpassen.
    So wie ich mir das nun erlesen habe, brauche ich für jedes Element ein Render.Transform objekt, stimmt das?
    Gibt es keine möglichkeit die XAML datei nicht anzufassen und alles per Code festlegen?
    Da teile des Layouts dynamisch aus einer Datenbank geladen werden, ich würde ungern dort wieder bei.

    Vielleicht kennt jemand ja eine Lösung

    MFG
  •  01-30-2012, 9:08 223715 Antwort zu 223691

    AW: Größe dynmaisch anpassen

    Ich habe es zu einen Teil herrausbekommen. Die XAML muss man einfach nur auf Folgende Art und Weise anpassen.
    <Canvas>

    <Canvas.RenderTransform>

    </ScaleTransform x:Name="CanvasScale" ScaleX="1" ScaleY="1">

    </Canvas.RenderTransform>

    <Grid x:Name="LayoutRoot" Margin="0,0,0,0" Background="White" MouseLeftButtonDown="LayoutRoot_MouseLeftButtonDown" Loaded="LayoutRoot_Loaded" >

    </Grid>

    </Canvas>

    Alle weiteren objekte im Grid werden mit den Canvas angepasst. Die werden hierbei dynamisch geladen.
    Der Code hat sich nicht sehr weiter geändert
    public void MainPage_SizeChanged(object sender, SizeChangedEventArgs e)

    {

    double height = App.Current.Host.Content.ActualHeight;

    double width = App.Current.Host.Content.ActualWidth;

    CanvasScale.ScaleX = width / startwidht;

    CanvasScale.ScaleY = height / startheight;

    }

    startheight und startwidht sind die Größe des geladenens Grid.
    Was nun noch gemacht werden muss, ist die größe des objektes im Browser auf 100% zu passen, damit das event gefeuert wird.
    Und ich darf an folgendes Errinern: FireFox kommt nicht klar mit Prozent angaben
    Also funktioniert das nicht im firefox.
    Gibt es eine möglichkeit das diese auch im Firefox realisiert werden kann?


Als RSS Feed in XML ansehen
Powered by Community Server (Commercial Edition)