Silverlight: App skalieren



  • Wie kann ich alle Controls meiner Silverlight verkleinern bzw. vergrößern, aber das Seitverhältnis soll erhalten bleiben?



  • Keiner eine Idee?



  • Benutz einfach ne ViewBox.



  • Danke. Hast du ein Beispiel, wie ich die ChildControls in einer ViewBox anlegen muß damit sie mitskalieren?



  • Orchy schrieb:

    Danke. Hast du ein Beispiel, wie ich die ChildControls in einer ViewBox anlegen muß damit sie mitskalieren?

    <ViewBox>
        <Button Content="Hallo" />
    </ViewBox>
    

    Sollte eigentlich reichen, um den Button zu skalieren? Oder was ist deine konkrete Frage?

    MfG



  • Meine konkrete Frage: Ich habe eine Beispiel-App, sagen wir mal 800 x 600. Die soll auf einem handy genauso aussehen wie auf einem 24 Zoll Display. Wie und mit welchen Parametern bzw. Controls muß ich das angehen?

    Wäre auch toll wenn jemand ein deutschsprachiges Tutorial kennen würde, weil es scheinbar keine vernünftigen Silverlight 4 -Bücher gibt.



  • /rant/ schrieb:

    Orchy schrieb:

    Danke. Hast du ein Beispiel, wie ich die ChildControls in einer ViewBox anlegen muß damit sie mitskalieren?

    <ViewBox>
        <Button Content="Hallo" />
    </ViewBox>
    

    Sollte eigentlich reichen, um den Button zu skalieren? Oder was ist deine konkrete Frage?

    MfG

    ViewBox funzt mit Silverlight irgendwie nicht. Weiß jemand warum? Hat jemand eine andere Lösung?



  • Wahrscheinlich weil ViewBox nur in WPF enthalten ist und nicht in Sivlelright.

    Sollte aber ganz einfach sein, sowas selbst zu programmieren.



  • Rhombicosidodecahedron schrieb:

    Wahrscheinlich weil ViewBox nur in WPF enthalten ist und nicht in Sivlelright.

    Sollte aber ganz einfach sein, sowas selbst zu programmieren.

    Ich würde hier nicht posten wenn es so einfach wäre. Ich habe auch keinen einzigen braucbaren Beispielcode gefunden der funktioniert.



    • Klasse von Control ableiten.

    • Erzeuge eine Abhängigkeitseigenschaft für das Seitenverhältnis und eine Methode, die bei Änderung aufgerufen wird und beim sender as Control die InvalidateArrange -Methode aufruft.

    • überlade protected override Size ArrangeOverride(Size finalSize)

    • gebe finalSize zurück.

    • Dazwischen:

    • Berechne das Rechteck für das Größe der Elemente.

    • foreach -Schleife über this.Children

    • rufe bei jedem Element Arrange mir dem berchneten Rechteck auf.

    An manchen Stellen musst du vielleicht noch auf null , Empty oder ähnliches Prüfen also so sollte es ungefähr funktionieren.
    (Ohne es selber programmiert zu haben)


Log in to reply