archivi mensili: Aprile 2013

Facile e veloce: Spostare un rettangolo utilizzando c# In un App Store di Windows

La mia filosofia generale del blog è che è perfettamente bene al blog su vecchio, si stabilì a soggetti che sono stati coperti a morte altrove.  Presumo che questo argomento è uno di quelli, ma io sono il blogging è comunque.

Sto lavorando su un app store di finestra e io sono la parte dove ho bisogno di fare qualche animazione.  A tal fine, Ho capire bit e pezzi di windows memorizzare animazione app che, come si scopre, è abbastanza vicino a, ma non è esattamente come, Animazioni XAML basato in .NET (Sto venendo ancora alle prese con il fatto che WinRT <> .NET ).

Questa mattina ho voluto ottenere una maniglia su trascinare e rilasciare le operazioni.  In rotta verso che, Io sono impantanato muovendo invece un rettangolo :).  Ecco il codice che si muove un rettangolo quando l'utente fa clic su un pulsante:

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

Il trucco è che non posso cambiare direttamente OffsetX o OffsetY.  Ci può essere un modo più intelligente di fare questo (e se si conosce e si sentono come, si prega di postare nei commenti). 

A tale scopo, Ho bisogno di:

1. Ottenere l'oggetto MatrixTransform del rettangolo (eseguendo il cast RenderTransform).

2. Ottenere la matrice di quel tipo.

3. Modificare gli offset di Matrix.

4. Riassegnare il Matrix torna alla MatrixTransform.

5. Riassegnare l'oggetto MatrixTransform torna al rettangolo.

Per testarlo, Ho messo un rettangolo e pulsante sullo schermo. Quando si fa clic sul pulsante, la logica di cui sopra viene eseguito e si muove il rettangolo immediatamente.

Ad un certo punto, Vorrei animare questo ma non ho idea di come ottenere un oggetto DoubleAnimation per lavorare su di esso (Storyboard.SetTargetProperty() è un mistero per me su questo per il momento essere).

</fine>

undefinedIscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin

Regolazione dell'altezza di ListBoxItem In un controllo ListBox a livello di codice per App Store di Windows

Sto lavorando su un'applicazione di windows store e una delle cose che voglio fare in app è visualizzare un log che mostra i messaggi di stato e altri interessanti siti informativi, come l'utente lavora le cose. A tal fine, Ho aggiunto un controllo ListBox come segue:

<ListBox x:Nome ="GameStateLog" HorizontalAlignment ="Centro" Altezza ="221" VerticalAlignment ="In alto" Larghezza ="499" Imbottitura ="0" FontSize ="10">

 

Il codice c# per compilare l'oggetto listbox in fase di esecuzione è stato lungo le linee di:

GameStateLog.Items.Insert(0, GameStateCounter     + ": Nuovo gioco di stato: in attesa di giocatore 1 nome");

Questo ha funzionato bene abbastanza, ma l'interfaccia utente ha mostrato una quantità pazzesca di imbottitura intorno i singoli messaggi che sono stati aggiunti. Questo ha un senso se desidera che gli utenti finali siano in grado di selezionare questi elementi, ma non ha senso quando voglio solo mostrare una serie di messaggi di log corrente – gli utenti non selezionare questi, solo visualizzarli. Era stranamente difficile di trovare un modo semplice per fare questo e probabilmente, il modo che ho trovato non è necessariamente "facile", ma ho avuto lavoro OK. La comprensione chiave è venuto da questo distacco qui (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) da Bob Relyea. Invece di aggiungere stringhe alla raccolta di articoli su ListBox, aggiungere ListBoxItem. Aggiungendo una stringa, ListBox stava creando un oggetto ListBoxItem in proprio. Non ero in grado di incidere nulla su quel ListBoxItem dopo il fatto. Il nuovo codice è:

        privato void AddGameStateLogMessage(stringa Strumento)
        {
            ListBoxItem li = Nuovo ListBoxItem();
            li.Contenuto = strumento;
            li.MaxHeight = 25;

            Spessore thisPadding = Nuovo Spessore(5, 0, 5, 0);
            li.Imbottitura = thisPadding;

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

 

Qui sto creando di ListBoxItem e inserendole. Ho rimosso l'imbottitura in eccesso impostando il suo spessore.

Questo è abbastanza flessibile, come intendo fare qualche colore codifica per evidenziare particolari tipi di messaggi e aggiungendo direttamente ListBoxItem arriva al loro stile qualsiasi modo desiderato.

Spero che questo aiuti qualcuno!

</fine>

undefinedIscriviti al mio blog.

Seguimi su Twitter a http://www.twitter.com/pagalvin