my.ASPItalia.com
ASP.NET
|
HTML5
|
LINQ e Entity Framework
|
Silverlight
|
Windows Phone
|
.NET Framework
|
Libro WP7
|
Libro HTML5
|
Corso on-site HTML5
Iscriviti
Login
Newsletter
Home
Articoli
Script
Notizie
FORUM
Blogs
Lab
Media
Tutorials
Corsi
Libri
Tags
Tutti i forum
Ricerca
FAQ
Fai una domanda
Ribbon e MVVM
in
.NET Framework
>
Windows Presentation Foundation e WinForms
Ultimo messaggio
1
2
>>
blackjack01
il 2 luglio 2009 alle 20:09
7 messaggi
dal 06 febbraio 2009
Volevo Chiedere se è possibile implementare il pattern mvvm su wpf con il ribbon di office. Per esempi avendo un datagrid su un usercontrol che inserisco in una riga di un grid e il ribbon sulla riga superiore con il pulsante per fare l'elimina di una riga del datagrid.
Spero di essermi spiegato.
Ringrazio anticipatamente
Guido
Rispondi
Quoting
cyber_man
il 2 luglio 2009 alle 22:16
215 messaggi
dal 07 settembre 2005
Io mi sono cementato nell'implementazione del mvvm con i ribbon.
Il concetto è che devi usare gli ICommand per collegare il bottone al tuo ViewModel.
Non è difficile iniziare ma il problema sono i passi successibi.
A me personalmente non è piaciuto che il "RibbonButton" non abbia proprietà visuali ma contiene una proprietà Command che è una classe RibbonCommand (Ereditata da ICommand) che contiene le proprietà visuali del comando.
Per me NON è molto chiaro il perché, per il ribbon, abbiano dovuto mettere le proprietà Visuali sull'ICommnand invece che sul Button.
Praticamente nel tuo ViewModel NON puoi esporre un ICommand "DeleteCommand" da linkare direttamente al "RibbonButton" perchè dovresti ritornare un "RibbonCommand" che precluderebbe l'uso del tuo ViewModel al solo ambito dei ribbon.
Quindi io ho esposto comunque l'ICommand e poi ho realizzato un proxy tra il RibbonCommand (Con proprietà visuali) del RibbonButton e l'ICommand del mio ViewModel.
... poi può essere che io abbia sbagliato tutto...
Altra cosa che NON mi è piaciuto per niente è la scelta di non gestire gli Shortcut da tastiera.
Mi aspettavo che il RibbonButton avesse una proprietà Shortcut come c'era sulle voci di menu in WinForms.
OK visto che il RibbonButton NON è visuale, va bene mettetela nel RibbonCommand... Invece niente!
Devi gestirtela tutta a mano utilizzando KeyGesture e InputBindings...
Mi sembra che tutto sia un pò fermo su WPF... anche DevExpress, Xceed, Syncfusion... fanno poco e punto in WPF...
Secondo me siamo ancora indietro...
... poi ... ripeto... può essere che io abbia sbagliato tutto...
Io sto andando avanti... ma non è banale...
Ciao.
Riccardo.
Rispondi
Quoting
blackjack01
il 3 luglio 2009 alle 08:46
7 messaggi
dal 06 febbraio 2009
Intanto molte grazie.
La parte dei comandi per il ribbon l'avevo più o meno risolta :P.
Il mio problema però era più che altro su come collegare le due view cioè il ribbon e quella che contiene il datagrid allo stesso viewmodel. E possibile o come posso fare?
Grazie
Guido
Rispondi
Quoting
cyber_man
il 3 luglio 2009 alle 08:56
215 messaggi
dal 07 settembre 2005
Come l'hai risolta la pare dei comandi per il ribbon ?
Il collegamento lo devi fare Bindando gli ICommand del ribbon con proprietà che provengono dal tuo ViewModel.
Ad esempio, se hai un bottone sul ribbon che serve a creare un nuovo record.
Innanzi tutto qul bottone NON è detto che sia sempre attivo e quindi devi gestire, nel ViewModel il CanExecute.
Quindi nel tuo ViewModel esponi una proprietà NerRowCommand che bindi con il Command del bottone del ribbon. Qui c'è il problema dei RibbonCommand ma te la sbrighi da solo.
Nel tuo ViewModel esporrai anche una Proprietà "Rows" che nel View bindi con la griglia.
Quindi il tuo ViewModel eseguirà NewRowCommand.Execute e tu crerai un nuovo record.
Sarebbe interessante discutere del Focus... cioè come fai a spostare il fuoco della griglia sul record appena creato senza sapere dal ViewModel quali oggetti bindi con i dati (Rows) della griglia?
Se lo sai dimmelo... :-)
Ciao.
Riccardo.
Rispondi
Quoting
blackjack01
il 5 luglio 2009 alle 12:45
7 messaggi
dal 06 febbraio 2009
Non riesco a capire se devo mettere 2 viewmodel uno per il ribbon e uno per il datagrid (che poi avra anche altre funzioni oltre a quelle nel ribbon). Non so come fare l'eliminazione di una riga selezionata o il passaggio dell'elemento selezionato ad un'altra finestra.
In quale ViewModel devo esporre anche una Proprietà "Rows" che nel View bindo con la griglia.
Scusa ma sono agli inizi con viewmodel.!:P
Grazie
Guido
Rispondi
Quoting
cyber_man
il 5 luglio 2009 alle 14:21
215 messaggi
dal 07 settembre 2005
Il Problema è che sono a gli inizi anche io e se qualcuno che non è a gli inizi ci degna di uno sguardo siamo tutti belli contenti...
Il problema credo che sia che forse non la usa nessuna questa MVVM.. :-)
Comunque!
Il ViewModel deve essere uno solo, quello che gestisce il comportamento dei dati contenuti nel Model. Quindi è qui che devi inserire la proprietà Rows.
Nel ViewModel devi esporre un'altra properietà CurrentRow che bindi in TwoWay con il SelectedItem dell'oggetto che usi per mostrare i dati (la griglia).
In questo modo il View di informa (ViewModel) di quale è l'attuale elemento da cancellare ecc...
Ciao.
Riccardo.
Rispondi
Quoting
blackjack01
il 5 luglio 2009 alle 19:20
7 messaggi
dal 06 febbraio 2009
Ma non è che hai qualche esempio. Io ho trovato "southridge wpf" su google che è un esempio di ribbon con mvvm però nn riesco cmq a capire bene come funziona quella parte!
Io devo realizzare un gestionale, sulle tab del ribbon ci saranno i deversi campi: clienti, fornitori, ordini clienti.. ecc , vorrei quindi mettere un mainviewmodel per il ribbon che poi si interfaccia(in non so quale modo)con i rispettivi viewmodel dei diversi campi, per fare un cosa secondo me piu ordinata.
Però nn so se è giusto il ragionamento..!
Rispondi
Quoting
cyber_man
il 5 luglio 2009 alle 20:51
215 messaggi
dal 07 settembre 2005
Io non metterei dei campi da manutenere nelle Tab del ribbon.
Il ribbon non è pensato per gestire contenuti di dati ma comandi e poco più.
Per quanto riguarda gli esempi NON ne ho.
L'esempio che mi hai passato sfrutta molte delle tecniche che ti ho descritto ma francamente lo trovo molto faraginoso e poco comprensibile...
Ciao.
Riccardo.
Rispondi
Quoting
1
2
>>
Salto rapido
Ultimi messaggi
Tutti i forum
Ricerca
Utenti online
ASP.NET
ASP.NET 2.0
ASP.NET 3.5
ASP.NET 4.0
.NET Framework
Silverlight
Windows Phone
Windows Presentation Foundation e WinForms
Windows Communication e Workflow
ASP - avanzato
ASP - base
SQL Server e MySQL
Libri
Hosting
Altri linguaggi e tecnologie
Windows Server, IIS & Security
E-commerce
OT
Commenti: blogs e notizie
Eventi
Torna al forum
| Feed
RSS
ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
In primo piano
Speciale web mobile: costruire applicazioni con ASP.NET, jQuery Mobile e PhoneGap
Speciale Silverlight 5: tutte le novità
Rilasciato il bollettino MS11-100 per risolvere i problemi di attacchi DoS di ASP.NET
I più letti di oggi
Preview 2 di ASP.NET MVC 2.0 ed una nuova versione per AJAX Control Toolkit
.NET Campus: Creare applicazioni veloci e user-friendly con jQuery, Microsoft AJAX Library e ASP.NET
Creazione di un alarm con suono personalizzato con Windows Phone 7.1
Microsoft lancia Windows 7 e Office 14
Paginare con i numeri di pagina un datagrid
Proteggersi da attacchi di SQL e code injection con ASP
Contare i record restituiti da una query
Concorso Windows Phone: AppLoad and win!
Ereditarietà degli Style in Silverlight
Formattazione automatica dei TextBlock
Media
Windows Phone 7.5 Developer Day: marketplace e strumenti per monetizzare le app
Windows Phone 7.5 Developer Day: costruire app con Visual Studio 2010 e Windows Phone Runtime
Tutti i media
In evidenza
Speciale web mobile: costruire applicazioni con ASP.NET, jQuery Mobile e PhoneGap
Speciale Silverlight 5: tutte le novità
Sviluppare applicazioni per Windows Phone: scopri come fare con il nostro nuovissimo libro!
Sviluppa le applicazioni del futuro oggi: impara con il nostro libro HTML5 Espresso!
Community Days 2012 - Milano
Visualizzare un template per browser mobile tramite un custom control ASP.NET
Windows 8 su ARM: avrà il desktop, Office e il connected standby
Rilasciato Entity Framework 4.3
MISC
I nostri autori
Collabora con noi!
Media Kit - Pubblicità sul nostro network