Měsíční archivy: Duben 2013

Rychlé a snadné: Přesunutí obdélníku pomocí C# v aplikaci Windows Store

Moje celkové blog filozofie je, že je to naprosto v pořádku na blog o staré, usadil se na předměty, které k smrti jinde.  Předpokládám, že toto téma je jedním z těch, Ale já jsem blogování to každopádně.

Pracoval jsem na app store okno a já jsem v části, kde je potřeba udělat nějaké animace.  Za tímto účelem, Já jsem přemýšlením kousky a kusy systému windows ukládat aplikace animace která, Jak to dopadá, je docela blízko k, ale ne tak docela, jako, XAML založené animace v .NET (Jsem stále přichází ke rvačce s faktem, že WinRT <> .NET 🙂 ).

Dnes ráno jsem chtěl získat handle na přetažení a přetažení operace.  Po cestě, Dostal zabředla namísto přesunutí obdélníku :).  Zde je kód, který přesune obdélník, když uživatel klepne na tlačítko:

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

Ten trik je, že nemohu změnit přímo OffsetX a OffsetY.  Může být chytřejší způsob, jak to provést (a pokud znáte a cítit jako, Prosím příspěvek v komentářích). 

Chcete-li to, Potřebuji:

1. Získejte MatrixTransform obdélník (Po obsazení RenderTransform).

2. Získejte Matrix toho chlapa.

3. Změna posuny v matici.

4. Znovu přiřadit matici zpět MatrixTransform.

5. Znovu přiřadit MatrixTransform zpět k obdélníku.

Chcete-li otestovat, Dejte obdélník a tlačítko na obrazovce. Když kliknu na tlačítko, výše uvedená logika spustí a okamžitě Přesune obdélník.

V určitém okamžiku, Chtěl bych oživit to, ale nemám tušení, jak se dostat DoubleAnimation na něm pracovat (Storyboard.SetTargetProperty() je je mi záhadou na tomto pro čas).

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Nastavení výšky ListboxItems v poli se seznamem pro Windows Store App

Já jsem pracoval na aplikace windows store a je jedna z věcí, které chci udělat v aplikaci zobrazit protokol, který zobrazuje stavové zprávy a další informační tidbits, jak uživatel pracuje věci. Za tímto účelem, Přidala jsem takto ListBox:

<ListBox x:Jméno ="GameStateLog" HorizontalAlignment ="Centrum" Výška ="221" VerticalAlignment ="Nahoru" Šířka ="499" Padding ="0" Velikost písma ="10">

 

Kód jazyka C# k naplnění seznamu za běhu byl po vzoru:

GameStateLog.Items.Insert(0, GameStateCounter    + ": Nová hra stát: čeká na hráče 1 Jméno");

To dopadlo dobře dost ale UI ukázala šílené množství výplně kolem jednotlivých zpráv, jak byly přidány. To dává smysl, je-li, aby koncoví uživatelé mohli vybrat tyto položky, ale nemá smysl, když chci jen Ukázat běžící sérii zpráv protokolu – uživatelé nebudou vybírat tyto, pouze zobrazit. Bylo to kupodivu těžké najít jednoduchý způsob, jak to udělat a pravděpodobně, způsob, jak jsem zjistil, že není nutně "snadné", ale mám to funguje OK. Klíčovým postřehem přišla od tohoto účtování Tady (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) od Bob Relyea. Namísto přidávání řetězců do kolekce položek v seznamu, Přidat ListBoxItems. Přidáním řetězce, ListBox vytvářel vlastní ListBoxItem o sobě. Nebyl jsem schopen ovlivnit nic o tomto ListBoxItem po faktu. Nový kód je:

        soukromé void AddGameStateLogMessage(řetězec theMessage)
        {
            ListBoxItem li = nové ListBoxItem();
            li.Obsah = theMessage;
            li.MaxHeight = 25;

            Tloušťka thisPadding = nové Tloušťka(5, 0, 5, 0);
            li.Padding = thisPadding;

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

 

Zde vytvářím si ListBoxItem a jejich vkládání. Jsem odstranil přebytečný odsazení nastavením jeho tloušťka.

To je velmi flexibilní, jak hodlám udělat nějaké barevné kódování pro zvýraznění určité typy zpráv a přidáním přímo ListBoxItems mám styl je požadovaným způsobem.

Doufám, že to pomůže někdo!

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin