2 messaggi dal 05 aprile 2011
Ciao,

sto approcciando da poco il pattern MVVM in WPF e vorrei avere un consiglio su come realizzare un controllo.

In pratica ho un button che a seconda di un parametro che gli passo, apre una windows che al suo interno ha un datagrid che accetta una lista generica. Il parametro che passo al button e quello che dovrei ripassare alla window per caricare la lista che andrà dentro il datagrid (la lista viene caricata al momento dell'apertura della window tramite una query).


Grazie per l'aiuto
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
dato che stai seguendo il pattern MVVM, dovresti legare il Command del bottone (e il suo CommandParameter per passare il valore) con un comando che hai definito nel ViewModel.

Però, per una questione di separazione delle responsabilità, il ViewModel non dovrebbe conoscere nulla di finestre & controlli, cioè di quei elementi che invece riguardano la View, ovvero l'interfaccia utente.
Di conseguenza, quando il comando viene eseguito nel ViewModel, non è il caso che apra direttamente la finestra.
Invece, potrebbe sollevare un evento a cui la finestra principale della tua applicazione si era sottoscritta. Questo le consentirà di venire a conoscenza dell'operazione compiuta dall'utente, e in risposta aprirà la finestra passando il parametro "allegato" all'evento.

Ci sono delle discussioni su un problema simile al tuo qui. Vedi se possono aiutarti.
http://forum.aspitalia.com/forum/post/413080/Lanciare-Evento-User-Control.aspx
http://forum.aspitalia.com/forum/post/349438/MVVM-Finestre-Dialogo.aspx

ciao,
Moreno

Enjoy learning and just keep making
2 messaggi dal 05 aprile 2011
Ciao,

allora penso di essere riuscito a fare qualcosa secondo la logica MVVM. Solo una cosa mi rimane. Visto che il mio button non deve avere un testo fisso, ma il testo cambia in base alla lista che voglio caricare. Come faccio a cambiare il testo del button attraverso il binding a runtime?
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
puoi fare così:
<Button Content="{Binding Etichetta}"></Button>

...dove Etichetta è il nome della proprietà in cui c'è la stringa di testo che vuoi rappresentare sul bottone. Questa è la proprietà posseduta dagli oggetti della tua lista.

Ecco alcune informazioni sul binding dalla documentazione MSDN.
https://msdn.microsoft.com/en-us/library/system.windows.data.binding(v=vs.110).aspx#Anchor_8

ciao,
Moreno

Enjoy learning and just keep making

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.