Einstellen der Höhe ListboxItems In ein ListBox-Steuerelement programmgesteuert für Windows-Speicher-App

Ich arbeite an einer Windows-Speicher-Anwendung und eines der Dinge, die ich in der app zu tun möchten ist ein Protokoll anzuzeigen, die Statusmeldungen und andere informativen Leckerbissen zeigt, wie der Benutzer Dinge funktioniert. Zu diesem Zweck, Ich habe eine ListBox folgendermaßen:

<ListBox x:Name ="GameStateLog" HorizontalAlignment ="Zentrum" Höhe ="221" VerticalAlignment ="Nach oben" Breite ="499" Padding ="0" FontSize ="10">

 

Der C#-Code zum Auffüllen der Listbox zur Laufzeit wurde nach dem Vorbild der:

GameStateLog.Items.Insert(0, GameStateCounter    + ": Neue Spielstatus: Spieler warten 1 Name");

Dies ging gut genug aber die UI zeigte eine verrückte Menge an Polsterung um die einzelnen Nachrichten, wie sie hinzugefügt wurden. Das macht Sinn, wenn ich Endbenutzer diese Elemente auswählen können will, aber keinen Sinn macht, wenn ich möchte nur eine laufende Reihe von Log-Meldungen anzeigen-Benutzer wird nicht diese auswählen, Sie anschauen. Es war seltsam schwer zu finden, eine einfache Möglichkeit, dies zu tun und wohl auch, der Weg, ich fand es nicht unbedingt "leicht" aber ich habe es funktioniert OK. Die zentrale Einsicht kamen aus diesem Beitrag Hier (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) von Bob Relyea. Anstelle von Zeichenfolgen in der Items-Auflistung auf das ListBox-Steuerelement hinzufügen, ListBoxItems hinzufügen. Durch Hinzufügen einer Zeichenfolge, ListBox wurde eine eigene ListBoxItem eigenständig erstellen.. Ich konnte nichts über die ListBoxItem im Nachhinein beeinflussen. Der neue Code:

        Privat privatevoid AddGameStateLogMessage(Zeichenfolge Ermittelt)
        {
            ListBoxItem li = Neu ListBoxItem();
            Li.Content = ermittelt;
            Li.MaxHeight = 25;

            Dicke ThisPadding = Neu Dicke(5, 0, 5, 0);
            Li.Padding = ThisPadding;

            GameStateLog.Items.Insert(0,Li);
        }

 

Ich erstelle die ListBoxItem und Einfügen. Ich entfernte die überschüssige Polsterung durch ihre Dicke festlegen.

Dies ist ziemlich flexibel, da ich beabsichtige, tun einige Farbcodierung, um bestimmte Arten von Nachrichten zu markieren und direkt hinzufügen ListBoxItems ich sie irgendwie Stil, was ich will.

Hoffe, das jemand hilft!

</Ende>

undefinedOnnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Hinterlasse eine Antwort

Deine Email-Adresse wird nicht veröffentlicht. erforderliche Felder sind markiert *