Kategori Arkiv: Windows Store

Snabb och enkel: Ange storleken på ett objekt i en listruta i ett Windows Store App

I en Windows Store App skapar jag, Jag vill visa användaren olika informationsmeddelanden.  Jag plockade en listruta som verktyget att visa det så att de kan bläddra igenom dem och allt det bra grejer. 

Meddelanden är endast informativt, så det finns ingen anledning att ge allt det extra mellanslag runt dem eftersom användaren kan aldrig välja dem för något.  Standardbeteendet för ListBox ger en betydande mängd stoppning och jag ville bli av med den.  Tja.... Du kan inte göra sånt på listrutan direkt.  EMELLERTID, Du kan göra det till de poster som du lägger till:

        privat void AddGameStateLogMessage(sträng theMessage)
        {
            Textrutan t = nya Lärobok();
            t.Text = GameStateCounter    + ": " + theMessage;
            t.TextWrapping = TextWrapping.Wrap;
            t.MinWidth = 400;
            Tjocklek thisPadding = nya Tjocklek(5, 0, 5, 0);
            t.Padding = thisPadding;
            t.FontSize = 12;

            ListBoxItem li = nya ListBoxItem();
            Li.Content = t;
            Li.MaxHeight = 25;
            thisPadding = nya Tjocklek(5, 0, 5, 0);
            Li.Padding = thisPadding;

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

i ovanstående, Jag är att skapa en textruta och ställa in teckensnitt, dess stoppning, m.m..

Nästa, Jag skapa en ListBoxItem och sätta dess innehåll till textrutan formaterad.

Slutligen, Jag sätter på ListBoxItem i listrutan.  (Jag vill visa senaste meddelanden överst på listan, därav skäret(0,Li) i stället för en enkel Lägg till() åkallan.).

Jag kommer att pyssla här lite innan jag är riktigt nöjd med ListBox beteendet men mönstret ovan har varit mycket givande.  Förhoppningsvis finner någon annan det användbart.

</slutet>

undefinedPrenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

Snabb och enkel: Flytta en rektangel med C# i en Windows Store App

Min övergripande blogg filosofi är att det är väl bra att blogga om gamla, bosatte sig ämnen som har täckts till döden på andra håll.  Jag antar att detta ämne är en av de, men jag är blogga det ändå.

Jag har jobbat på en fönster store app och jag på delen där jag behöver göra några animera.  I detta syfte, Jag har räkna ut bitar och bitar av windows lagrar app animation som, som det visar sig, är ganska nära till, men inte precis som, XAML baserad animationer i .NET (Jag fortfarande kommer till rätta med faktumet att WinRT <> .NETT 🙂 ).

I morse jag ville få ett grepp om dra och släpp-operationer.  På väg till som, Jag har kört ner flytta en rektangel i stället :).  Här är koden som flyttar en rektangel när användaren klickar på en knapp:

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

Tricket är att jag inte direkt att ändra OffsetX eller OffsetY.  Det kan finnas ett smartare sätt att göra detta (och om du vet och känner, posta i kommentarerna). 

För att göra detta, Jag behöver:

1. Få MatrixTransform av rektangeln (genom att RenderTransform).

2. Få matrisen av att killen.

3. Ändra i matrisen förskjutningar.

4. Tilldela om matrisen tillbaka till MatrixTransform.

5. Omtilldela MatrixTransform tillbaka till rektangeln.

Testa det, Jag satte en rektangel och knapp på skärmen. När jag klickar på knappen, ovanstående logiken körs och flyttar rektangeln omedelbart.

Vid något tillfälle, Jag vill animera detta men jag har ingen aning hur man får en DoubleAnimation att arbeta på det (Storyboard.SetTargetProperty() är ett mysterium för mig på den här gången att vara).

</slutet>

undefinedPrenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

Ange höjden av ListboxItems i en ListBox programmässigt för Windows Store App

Jag arbetar på en windows store ansökan och en av de saker jag vill göra i app är att visa en logg som visar statusmeddelanden och andra informativa godbitar som användaren arbetar saker. I detta syfte, Jag la en listruta som följer:

<ListBox x:Namn ="GameStateLog" HorizontalAlignment ="Center" Höjd ="221" VerticalAlignment ="Topp" Bredd ="499" Padding ="0" FontSize ="10">

 

C#-koden att fylla i listrutan vid körning var i linje med:

GameStateLog.Items.Insert(0, GameStateCounter    + ": Nya spelet staten: väntar på spelaren 1 Namn");

Detta fungerade bra nog men UI visade en galen mängd stoppning runt de enskilda meddelandena som de lades. Det är vettigt om jag vill att användare ska kunna markera dessa objekt men inte meningsfullt när jag vill bara visa en rinnande serie med logga meddelanden-användare kommer inte att välja detta, bara visa dem. Det var märkligt svårt att hitta ett enkelt sätt att göra detta och utan tvekan, Hur jag hittade det är inte nödvändigtvis "lätt" men jag fik den arbetande OK. Den viktigaste insikten kom från detta inlägg Här (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) från Bob Relyea. Istället för att lägga strängar objektmängden på ListBox, Lägg till ListBoxItems. Genom att lägga till en sträng, ListBox var att skapa en egen ListBoxItem på egen hand. Jag var inte kunna påverka något om att ListBoxItem i efterhand. Den nya koden är:

        privat void AddGameStateLogMessage(sträng theMessage)
        {
            ListBoxItem li = nya ListBoxItem();
            Li.Content = theMessage;
            Li.MaxHeight = 25;

            Tjocklek thisPadding = nya Tjocklek(5, 0, 5, 0);
            Li.Padding = thisPadding;

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

 

Här jag skapar Listboxitems och infoga dem. Jag tog bort överflödigt stoppning genom att ange dess tjocklek.

Detta är ganska flexibelt som jag avser att göra några färgkodning för att markera särskilda typer av meddelanden och genom att direkt lägga till ListBoxItems jag får stil dem som jag vill.

Hoppas detta hjälper någon!

</slutet>

undefinedPrenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin