2009-04-29 7 views
7

Ho scaricato WPFToolkit e sto utilizzando il DataGrid fornito in questo pacchetto. Sto cercando di animare una scomparsa di righe quando la riga viene rimossa, ma non so come farlo. Qualcuno sa come può essere fatto?Animate row sparance in WPFToolKit DataGrid

risposta

2

Questo è il genere di cose che possono essere complicate in WPF - anche se il tuo capo penserà che dovrebbe essere facile - dal momento che il WPF dovrebbe consentire l'animazione e l'impatto visivo. Dopo tutto, sul Web ci sono tutti i tipi di dimostrazioni di Silverlight/WPF che sembrano grandiose e vendono davvero la tecnologia. Ovviamente, quello che il tuo capo non sa è che quelle demo sono state scritte proprio per mettere in risalto le caratteristiche facili e appariscenti. Le cose che sono un po 'diverse dallo standard, tuttavia, hanno un modo brutto di essere molto difficili.

Ma basta declamazioni, io ti do un possibile approccio, anche se ci può essere una di gran lunga migliore:

Supponiamo che hai tenuti il ​​DataGrid a un qualche tipo di raccolta, e per amor di discussione Diamo si presuppone che sia un elenco di oggetti Foo, ovvero List<foo> MyFoos. Quindi è possibile aggiungere una proprietà alla classe FOO denominata BeingDeleted. Quindi, nel modello per il tuo DataRowView, attiva questa proprietà per avviare uno storyboard che anima una dissolvenza o un crollo di quella particolare riga. Questo è un po 'grossolano, dal momento che implica l'aggiunta di una proprietà all'oggetto Foo che potrebbe non avere nulla a che fare con esso altrimenti. In alternativa puoi creare uno speciale wrapper o sottoclasse di Foo.

+0

Ecco come ho deciso finalmente di implementarlo. Ci sono stati alcuni problemi con la sincronizzazione dell'elenco vincolato (dal momento che il sincronizzatore dovrebbe sapere di ignorare gli elementi "quasi cancellati"), e ho anche bisogno di eliminare effettivamente quegli elementi quando l'animazione è finita. Il risultato finale è un po 'disordinato (tutto è strettamente accoppiato), ma immagino che non ci sia altra soluzione. – Andy