Tag-Archive: Windows-Speicher

Schnell und einfach: Legen Sie die Größe von einem Elementen in einem Listenfeld in ein Windows-Speicher-App

In einer Windows-Speicher-App bin ich der Erstellung, Ich möchte dem Benutzer verschiedene Informationsmeldungen zeigen.  Ich habe eine ListBox als Werkzeug um es zu zeigen, so dass sie durch Sie und alles, was good Stuff zu blättern. 

Die Nachrichten sind nur zu Informationszwecken, Also gibt es keine Notwendigkeit, alle, dass zusätzliche Leerräume um sie herum zu bieten, da der Benutzer nie für etwas auswählen kann.  Das Standardverhalten der ListBox bietet umfangreiche Polsterung und ich wollte es loswerden.  Nun.... so etwas auf die ListBox geht direkt nicht.  JEDOCH, Du kannst es an den Elementen machen, die Sie hinzufügen:

        Privat privatevoid AddGameStateLogMessage(Zeichenfolge Ermittelt)
        {
            TextBox t = Neu TextBox();
            t.Text = GameStateCounter    + ": " + Ermittelt;
            t.TextWrapping = TextWrapping.Wrap;
            t.MinWidth = 400;
            Dicke ThisPadding = Neu Dicke(5, 0, 5, 0);
            t.Padding = ThisPadding;
            t.FontSize = 12;

            ListBoxItem li = Neu ListBoxItem();
            Li.Content = t;
            Li.MaxHeight = 25;
            ThisPadding = Neu Dicke(5, 0, 5, 0);
            Li.Padding = ThisPadding;

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

in den oben genannten, Ich bin ein Textfeld erstellen und Festlegen der Schriftart, die Polsterung, usw..

Nächste, Ich eine ListBoxItem erstellen und legen ihren Inhalt auf die formatierte TextBox.

Schließlich, Ich legen ListBoxItem in der ListBox.  (Ich möchte die neuesten Einträge am oberen Rand der Liste zeigen, daher die Einfügung(0,Li) statt einer einfachen hinzufügen() Aufruf.).

Ich wird dies Optimierungen werden, ein bisschen, bevor ich wirklich glücklich mit dem ListBox-Verhalten bin, aber das Muster oben abgebildet ist sehr fruchtbar gewesen.  Hoffentlich findet jemand anderes es hilfreich.

</Ende>

undefinedOnnieren Sie meinen Blog ab.

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

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