Laden...

Mittig positionieren der Elemente

Erstellt von gh0st93 vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.198 Views
G
gh0st93 Themenstarter:in
85 Beiträge seit 2014
vor 8 Jahren
Mittig positionieren der Elemente

Hallo liebes Forum.

Ich bin grad dabei, mir ne kleine Funktion zu schreiben, der meine Elemente mittig im Bildschirm Positionieren soll.

  • Wenn es um 1 Element geht, klappt es eigentlich wunderbar.

Mein problem ist, wie kann ich dies erweitern, dass wenn ich mehr als nur 1 element habe?

So sieht meine Funktion aus


        public double Rechnen(double displayWidth, int anzahlElem, double widthElem)
        {

            double marginLeft = (displayWidth - (anzahlElem * widthElem)) / 2;
            return marginLeft;

            
        }

aufrufen tu ich dies so


        public MainWindow()
        {
            InitializeComponent();
            double Width = System.Windows.SystemParameters.PrimaryScreenWidth;
            double Height = System.Windows.SystemParameters.PrimaryScreenHeight;

            btnTest.Width = 100; btnTest2.Width = 100;

            double marginBtnLeft = Rechnen(Width, 2, 100);
            Thickness margin = btnTest.Margin;
            margin.Left = marginBtnLeft;
            btnTest.Margin = margin;
            
        }

Ich hab mir überlegt, dies in eine Schleife zu packen & nach jedesmal nachdem er eine Breite gesetzt hat & den Margin ausgeführt hat, den neuen Margin um die länge des Elements zu erhöhen + nochmal um weitere 50 oder 100, damit sie nicht direkt nebeneinander liegen.

  • Was haltet Ihr davon? oder habt ihr andere lösungswege.
    Ich weiß, dafür sind eigentlich Stackpanel, ect gedacht, jedoch erhalte ich damit leider nicht das Resultat, was ich mir erwünscht hatte weshalb ich daher es gern im Code machen würde.

Ausehen sollte dies eigentlich im grunde (von der Positionierung her) so.
In windows-forms anwendung bekomm ich dies im Designer hin, in WPF leider nicht 😕

T
314 Beiträge seit 2013
vor 8 Jahren

Dafür brauchst Du in deinem Container nur die VerticalAlignment bzw. VerticalContentAlignment setzen.

G
gh0st93 Themenstarter:in
85 Beiträge seit 2014
vor 8 Jahren

Ok, werde ich versuchen.
Eins noch nebenbei, wenn dies ginge, bräuchte ich eigentlich garnichts mehr von beiden.

Nehmen wir an, ich hab nen Grid-Layout & Columns auf 7 & Rows auf 4 gesetzt.
So hätte ich jetzt ein Layout mit 7 Reihen in 4 Zeilen.

Gibt es eine möglichkeit, wenn ich nur 1 Element dadrin habe, diesen direkt auf Zeile 2, Platz 2 zu setzten?

ein auf


MyButton.UniformGrid.setPosition[2][2]

oder so ähnlich ?

T
314 Beiträge seit 2013
vor 8 Jahren

Puhhh wenn ich ehrlich bin hab ichs nicht verstanden, aber Du kannst jede Zelle ansprechen.

Dafür ist Grid.Row und Grid.Column da.

G
gh0st93 Themenstarter:in
85 Beiträge seit 2014
vor 8 Jahren

Hab die frage nochmals grad etwas umformeliert.
Vielleicht ist es jetzt besser zu verstehen :x

P
157 Beiträge seit 2014
vor 8 Jahren

Huhu,
versuch mal dein Layouting im Xaml zu machen ... sonst brauchst du kein WPF...

Wenn's zum weinen nicht reicht, lach drüber!