Arxius per mes: Abril 2013

Ràpid i fàcil: Moure un Rectangle utilitzant C# en un App de botiga de Windows

La meva filosofia de bloc global és que està perfectament bé a blog sobre l'antic, es van establir d'assignatures que s'han cobert fins a la mort en un altre lloc.  Suposo que aquest tema és una d'aquestes, però jo sóc blogging de tota manera.

He estat treballant en un app de botiga de finestra i estic a la part on he de fer alguns animant.  Amb aquesta finalitat, He estat esbrinar miques i peces de windows emmagatzema animació app que, doncs resulta, està molt a prop, però no exactament com, Animacions de XAML basat en .NET (Jo encara estic arribant a enfrontar el fet que WinRT <> .NET 🙂 ).

Aquest matí he volgut aconseguir una maneta en arrossegar i deixar anar les operacions.  En ruta cap a la, Jo s'encallava movent un rectangle en el seu lloc :).  Aquí és el codi que mou un rectangle quan l'usuari fa clic a un botó:

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

El truc és que directament no pot canviar OffsetX o OffsetY.  Hi pot haver una manera de fer-ho més intel ligent (i si vostè sap i se sent com, Si us plau enviar en els comentaris). 

Per aconseguir-ho, Necessito:

1. Obtenir el MatrixTransform del rectangle (els càsting RenderTransform).

2. Obtenir la matriu d'aquest tipus.

3. Canviar les compensacions de la matriu.

4. Reassigna la matriu torna a la MatrixTransform.

5. Reassigna la MatrixTransform torna a Rectangle.

Per analitzar-lo, Vaig posar un rectangle i botó de la pantalla. Quan faig clic al botó, la lògica anterior executa i mou el rectangle immediatament.

En algun moment, M'agradaria animar això però no tinc cap idea com per aconseguir un DoubleAnimation treballar-hi (Storyboard.SetTargetProperty() està sent un misteri per a mi en això per a l'hora).

</final>

undefinedSubscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

Establir l'altura de ListboxItems en un ListBox mitjançant programació per a l'App Store de Windows

Estic treballant en una aplicació de windows botiga i una de les coses que vull fer en l'app és mostrar un registre que Mostra els missatges d'estat i altres delícies informatius com l'usuari treballa coses. Amb aquesta finalitat, He afegit un quadre de llista els següents:

<Quadre de llista x:Nom ="GameStateLog" HorizontalAlignment ="Centre" Alçada ="221" VerticalAlignment ="Part superior" Amplada ="499" Embuatat ="0" Grandària de font ="10">

 

El codi de c# per emplenar el quadre de llista al temps d'execució va en la línia de:

GameStateLog.Items.Insert(0, GameStateCounter     + ": Nou estat de joc: a l'espera per a l'intèrpret 1 nom");

Això funcionava de Belles prou però l'UI va mostrar una quantitat boja de rebliment als voltants els missatges individuals com els que es van afegir. Això té sentit si voleu que els usuaris finals puguin seleccionar aquests elements, però no té sentit quan només vull mostrar una sèrie de missatges de registre corrent-els usuaris no seleccionar aquestes, només veure'ls. Era estranyament difícil de trobar una manera fàcil de fer això i possiblement, el camí que trobava no és necessàriament "fàcil" però aconseguia treballant correcte. La idea clau venia d'aquest anunci aquí (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) de Bob Relyea. En comptes d'afegir les cordes a la col·lecció d'elements en el quadre de llista, afegir ListBoxItems. Afegint una corda, el quadre de llista va anar creant un ListBoxItem en el seu propi. No podia afectar res sobre aquest ListBoxItem després del fet. El nou codi és:

        privat buit AddGameStateLogMessage(corda theMessage)
        {
            ListBoxItem li = nou ListBoxItem();
            li.Contingut = theMessage;
            li.MaxHeight = 25;

            Gruix thisPadding = nou Gruix(5, 0, 5, 0);
            li.Embuatat = thisPadding;

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

 

Aquí estic creant de ListBoxItem i la inserció. Treia el farciment excés posant el seu gruix.

Això és força flexible, ja que tinc la intenció de fer una mica de color de codificació per posar de relleu tipus particulars de missatges i afegint directament ListBoxItems arribo a l'estil d'ells com que jo vulgui.

Espero que això ajudi a algú!

</final>

undefinedSubscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin