Monataj Arkivoj: Aprilo 2013

Rapide kaj Facile: Movi Rektangulon Uzanta C# En Fenestra Vendejo App

Mia entuta bloga filozofio estas ke ĝi estas perfekte bona al blogo pri malnova, Solvita temojn kiu estis kovrita al morto aliloke.  Mi supozas ĉi tiun temon estas unu el tiuj, Sed mi estas blogging ĝi ĉiuokaze.

Mi estis laboranta sur fenestra vendejo app kaj mi estas ĉe la parto kie mi devas fari kelkajn vigligantan.  Al ĉi tiu fino, Mi estis kalkulanta ekstere pecojn kaj pecojn de fenestroj entenas app viveco kiu, Kiel ĝi rezultas, Estas tre proksima al, Sed ne ĝuste ŝatas, XAML bazita vivecojn en .RETO (Mi estas ankoraŭ venanta al tenoj kun la fakto ke WinRT <> .NET 🙂 ).

Ĉi tiu mateno mi deziris akiri anson sur kaleŝo kaj falaj operacioj.  En vojo al tio, Mi akiris bogged malsupren movanta rektangulon male :).  Ĉi tie-a la kodo kiu movas rektangulon kiam la uzanto klakas butonon:

   1:   
   2:              MatrixTransform ct = (MatrixTransform)RectBig.RenderTransform;
   3:              Matrico m = ct.Matrico;
   4:              M.OffsetX  = 10;
   5:              M.OffsetY  = 10;
   6:              Ct.Matrico = m;
   7:              RectBig.RenderTransform = ct;

La ruzo ĉi tie estas ke mi povas ne rekte ŝanĝi OffsetX aŭ OffsetY.  Tie povas esti pli lerta vojo fari tion ĉi (Kaj se vi scias kaj senti kiel, Plaĉi poŝton en la rimarkoj). 

Por fari tion ĉi, Mi devas al:

1. Akiri la MatrixTransform de la rektangulo (De ĵetanta RenderTransform).

2. Akiri la Matricon de tiu ulo.

3. Ŝanĝi la ofsetojn de la Matrico.

4. Reassign la Matrico reen al la MatrixTransform.

5. Reassign la MatrixTransform malantaŭa al la Rektangulo.

Elprovi ĝin, Mi metis rektangulon kaj butonon la ekrano. Kiam mi klakas la butonon, La supra logiko efektivigas kaj movas la rektangulon tuj.

Ĉe iu punkto, Mi ŝatus vigligi tion ĉi sed mi havas neniun ideon kiel akiri DoubleAnimation labori sur ĝi (Storyboard.SetTargetProperty() Estas mistero al mi sur tio ĉi por la tempa estado).

</Fino>

undefinedAboni al mia blogo.

Sekvi min sur Pepi ĉe http://www.twitter.com/pagalvin

Fiksanta la Alton de ListboxItems En ListBox Programmatically por Fenestra Vendejo App

Mi estas laboranta sur fenestra vendeja apliko kaj unu el la aferoj mi deziras fari en la app estas montras ŝtipon kiu montras statusajn mesaĝojn kaj aliajn informajn informetojn kiel la uzanto laboras aferojn. Al ĉi tiu fino, Mi aldonis ListBox kiel sekvas:

<ListBox x:Nomo="GameStateLog" HorizontalAlignment="Centro" Alto="221" VerticalAlignment="Supro" Larĝo="499" Remburanta="0" FontSize="10">

 

La C# kodo loĝi la listbox ĉe runtime estis laŭ la ekzemploj de:

GameStateLog.Eroj.Enigaĵo(0, GameStateCounter   + ": Nova luda stato: Atendanta por ludisto 1 Nomo");

Tio ĉi eliris bone sufiĉan sed la UI montris frenezan kvanton remburi ĉirkaŭ la individuaj mesaĝoj kiel ili estis aldonita. Kiu faras senton se mi deziras finajn uzantojn esti kapabla elekti ĉi tiujn erojn sed ne faras senton kiam mi nur deziras montri fluan serion de ŝtipaj mesaĝoj – uzantoj ne elektos ĉi tiujn, Nur vidi ilin. Ĝi estis strange malfacile trovi facilan vojon fari tion ĉi kaj arguably, La vojo mi trovis ĝin ne estas nepre “facila” sed mi akiris ĝin laboranta OK. La kerna enrigardo venis de ĉi tiu afiŝo Ĉi tie (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) De Bob Relyea. Anstataŭ aldonanta ŝnurojn al la Era kolekto sur la ListBox, Aldoni ListBoxItems. De aldonanta ŝnuron, La ListBox estis kreanta ĝian propran ListBoxItem sur ĝia propra. Mi ne estis kapabla influi ion ajn pri tiu ListBoxItem post la fakto. La nova kodo estas:

        Privata Malplena AddGameStateLogMessage(Ŝnuro TheMessage)
        {
            ListBoxItem li = Nova ListBoxItem();
            Li.Kontenta = theMessage;
            Li.MaxHeight = 25;

            Dikeco thisPadding = Nova Dikeco(5, 0, 5, 0);
            Li.Remburanta = thisPadding;

            GameStateLog.Eroj.Enigaĵo(0,Li);
        }

 

Ĉi tie mi estas kreanta ListBoxItem-a kaj insertanta ilin. Mi forigis la ekscesan remburaĵon de fiksanta ĝian dikecon.

Tio ĉi estas sufiĉe fleksebla kiel mi ja celas fari iun koloron kodanta reliefigi apartajn tipojn de mesaĝoj kaj de rekte aldonanta ListBoxItems mi akiras al stilo ili ajna vojo mi deziras.

Hope tio ĉi helpas iun!

</Fino>

undefinedAboni al mia blogo.

Sekvi min sur Pepi ĉe http://www.twitter.com/pagalvin