Quali sono le tue strategie per utilizzare Expression Blend su applicazioni WPF complesse e disaccoppiate?

StackOverflow https://stackoverflow.com/questions/820547

  •  03-07-2019
  •  | 
  •  

Domanda

Ho fatto applicazioni WPF con il modello MVVM usando Visual Studio, codificando C # e XAML principalmente a mano.

Ora sono riuscito ad accelerare con Expression Blend in modo da poter fare clic insieme rapidamente sulle applicazioni WPF semplicemente usando la GUI, che è molto bella, molto più controllo del layout che armeggiare con tutti gli elementi XAML l'80% di il tuo tempo.

Ma sembra che le mie applicazioni in Expression Blend siano più semplici e necessariamente accoppiate, usando eventi che sono gestiti nel codice dietro, ecc.

Trovo difficile immaginare come potrei passare da questo approccio più semplice di Expression Blend a un'applicazione MVVM disaccoppiata con viste, ViewModels, eventi e comandi indirizzati, ecc. oltre a portare il mio intero progetto in Visual Studio e riorganizzare al punto che non potevo più modificarlo visivamente in Blend, ma tornerei a usare Blend per creare piccoli pezzi di XAML che incolgo in Visual Studio.

Per quelli di voi che stanno lavorando con applicazioni più complesse con Expression Blend, quali sono le strategie per mantenere i progetti disaccoppiati in modo MVVM, ma allo stesso tempo strutturati "nel modo Expression Blend" (dove puoi ancora vedere e modificare intere parti dell'applicazione in modo visivamente sensato) in modo da poter continuare a modificarle nella GUI di Blend man mano che si ridimensionano?

È stato utile?

Soluzione

Ho usato Blend prima di tutto come strumento di prototipazione rapida. A tal fine, mi piace molto. In particolare, lo trovo molto utile quando non sono sicuro di come impostare le cose per ottenere il layout / comportamento che voglio.

Raramente modifico i miei file di progetto principali direttamente in Blend. Trovo che crei un markup inutilmente complesso o dettagliato. Inoltre, man mano che acquisisco maggiore familiarità con WPF / XAML, mi ritrovo a utilizzare Blend sempre meno.

Altri suggerimenti

Uso Blend per l'interfaccia utente dei miei progetti dalla versione 1. Dato che il mio obiettivo è integrare completamente il progettista nel progetto, ho analizzato tutto ciò che ostacola questo obiettivo. Pur non essendo a conoscenza di MVVM da qualche tempo, sono naturalmente arrivato alla stessa conclusione e ho realizzato ViewModels senza sapere che c'era un modello per loro. Ora, con l'aiuto di altri che stanno lavorando verso MVVM, sta migliorando continuamente. Ora ho sviluppato 3 applicazioni con una ricca interfaccia utente e funzionalità in cui tutta l'interfaccia utente è stata eseguita in Blend. Leggi l'articolo MSDN di Josh Smith, guarda il lavoro di Jason Dolinger e il lavoro di Karl Shifflett per menzionarne solo alcuni.

Osserva attentamente l'utilizzo di ICommand, INotifyPropertyChanged, ObservableCollections.

Cerca anche come puoi manipolare i controlli dal tuo ViewModel. Ad esempio, c'è ICollectionView. Supponi di avere un elenco di animali e di avere una serie di tipi per cui filtrarli (uccelli, mammiferi, ecc.)

Utilizzando ICommand e ICollectionView, è possibile esporre un controllo sufficiente su dove un progettista potrebbe costruire una casella di riepilogo per mostrare gli animali e un menu per mostrare l'elenco dei filtri. C'è abbastanza funzionalità in ICollectionView per sapere qual è la selezione corrente e se avevi comandi basati su ICommand per " SortByBird " ;, " SortByMammal " ;, ecc. Allora quando il designer ha creato il menu, (supponendo che il contesto della finestra fosse il tuo ViewModel per questa finestra) fornirebbe al designer le opzioni appropriate a cui associarsi.

Attualmente sto lavorando con un altro team della mia azienda per spiegare come sono stati creati i miei progetti e stanno rispondendo positivamente al nuovo ruolo del designer che utilizza Blend.

Non sono stato in grado di usare correttamente Blend end to end per quello.

Trovo, nel caso generale, che sia più veloce modificare xaml manualmente in VS (ad esempio, qualsiasi cosa con pennelli non standard). Blend fa molto clic e non è molto veloce per completarlo.

Un'altra area in cui Blend è davvero utile è la creazione di stili / modelli da controlli esistenti.

A parte questo, non sono ancora venduto. Le sue capacità diminuiscono quando si utilizzano i datacontexts con istanza di codice, quindi non è di aiuto e tende a generare markup inutili, dimensioni statiche e simili, cosa che non mi piace davvero.

La miscela è fantastica per darti un'idea di come le cose possono essere fatte, ma lo xaml che produce è terribile e strettamente accoppiato. Man mano che impari meglio il lato xaml delle cose, scoprirai che è molto più veloce scrivere semplicemente xaml piuttosto che usare Blend. Fino a quando non arriverai a quel punto, puoi apportare le modifiche in Blend, ma poi dovresti riformattare lo xaml che crea per renderlo meno strettamente accoppiato ed eliminare gli elementi estranei dell'interfaccia utente.

Sono un po 'in ritardo a questa festa, ma spero che qualcuno possa ancora rispondere. Devo ancora trovare un risultato di ricerca che delinei il processo per tracciare una linea tra il progettista e il programmatore. La prima parte è MVVM, quindi non c'è alcun accoppiamento tra la GUI e la "logica aziendale" sottostante, e sto lavorando sodo per impararlo proprio ora. L'altra parte di cui non ho visto nessuno scrivere è: come si fa realmente a progettare un progetto in Blend in modo che lo sviluppatore possa sostanzialmente fornirti una sorta di DLL GUI, e quindi la GUI della tua applicazione cambia magicamente?

Ecco quello che sto cercando: lo sviluppatore scrive il suo codice come al solito e scrive anche una GUI di base che dimostra che tutto funziona come previsto. Nel frattempo, il designer sta creando la sua piccola e interessante interfaccia grafica con tutte le funzionalità di usabilità che le persone si aspettano. Ora, lo sviluppatore può eseguire la sua applicazione con la sua GUI, ma può anche passare alla GUI del designer al volo.

Suppongo che se non può essere fatto al volo, ciò significa nel caso ideale che lo sviluppatore avrebbe la sua soluzione VS che include l'XAML della soluzione Blend? Quindi in App.xaml basta fare riferimento a un file di avvio diverso?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top