Archiv der Kategorie: 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

Schnell und einfach: Verschieben eines Rechtecks mit c# In einer Windows-Speicher-App

Meine allgemeine Blog-Philosophie ist, dass es völlig in Ordnung, über alte blog, besiedelt von Motiven, die zu Tode an anderer Stelle erbracht hat.  Ich nehme an, dieses Thema ist einer von denen, aber ich bin Bloggen es sowieso.

Ich arbeite schon seit über einem Fenster-Speicher-app und ich bin an der Stelle wo ich muss einige animieren zu tun.  Zu diesem Zweck, Ich habe herauszufinden Bits und Stücke von Windows speichern app Animation die, wie sich herausstellt, ist ganz nah an, aber nicht genau wie, XAML-basierte Animationen in .NET (Ich komme noch in den Griff bekommen mit der Tatsache, dass WinRT <> .NET 🙂 ).

Heute Morgen wollte ich einen Handle auf Drag und drop-Operationen.  Auf dem Weg nach, Ich habe verzettelt sich bewegen stattdessen ein Rechteck :).  Hier ist der Code, der ein Rechteck bewegt, wenn der Benutzer auf eine Schaltfläche klickt:

   1:   
   2:              MatrixTransform ct = (MatrixTransform)rectBig.RenderTransform;
   3:              Matrix m = ct.Matrix;
   4:              m.OffsetX  = 10;
   5:              m.OffsetY  = 10;
   6:              ATLMatrix = m;
   7:              rectBig.RenderTransform = ct;

Der Trick dabei ist, dass ich direkt OffsetX oder OffsetY geändert werden kann.  Möglicherweise gibt es ein schlauer Weg dies zu tun (und wenn Sie wissen und fühlen sich wie, Bitte in den Kommentaren Posten). 

Um dies zu tun, Ich muss:

1. MatrixTransform des Rechtecks zu erhalten (durch das Umwandeln von RenderTransform).

2. Die Matrix von dem Typen bekommen.

3. Ändern Sie die Matrix-offsets.

4. Weisen Sie der Matrix zurück zu MatrixTransform.

5. Zuweisen von MatrixTransform zurück auf das Rechteck.

Um es zu testen, Ich habe ein Rechteck und den Bildschirm-Taste. Wenn ich auf die Schaltfläche klicken, die oben genannten Logik führt und verschiebt das Rechteck sofort.

An einem gewissen Punkt, Ich möchte dies zu animieren, aber ich habe keine Ahnung wie man eine DoubleAnimation zusammen zu arbeiten (Storyboard.SetTargetProperty() ist mir ein Rätsel zu diesem für die Zeit sein).

</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