Ho un elenco di elementi in datagrid WPF. Come fonte uso ObservableCollection. Una delle colonne è anche il binding della casella di controllo alla proprietà bool della raccolta. Nella stessa finestra, fuori dalla griglia, ho anche un pulsante. Voglio che il pulsante sia disabilitato se non ci sono record con la casella spuntata = tutti gli oggetti hanno la proprietà bool impostata come falsa.
Penso che non sarebbe un problema farlo in codebehind ma sto provando a farlo in modo wpf usando stili, trigger ecc. Ma non so come farlo.
risposte:
2 per risposta № 1Suggerirei di utilizzare l'approccio MVVM, che implica la creazione di un Command
che è DataBound al Button
. Se non stai già utilizzando un framework MVVM, ce ne sono diversi là fuori.
In Prism (una possibilità) DelegateCommand
ha un CanExecute
delegato che è possibile implementare. Questo CanExecute
il metodo dovrebbe quindi valutare il tuo ObservableCollection
di articoli e decidere se il Command
può essere eseguito (abilitato) o meno (disabilitato). Se questo metodo restituisce false, il pulsante verrà disabilitato.
Tutti gli altri framework MVVM avranno un simile Command
costruire.
Vi è una grande documentazione di questa e di altre attività correlate a MVVM nella documentazione di Prism. È possibile trovare la documentazione e gli esempi specifici del comando Qui.