82 messaggi dal 12 novembre 2007
Salve, ho una combobox con all'interno una Checkbox
<ComboBox ItemsSource="{Binding}" Margin="345,31,6,0" Name="cmbCategorieStatistiche" Height="23" VerticalAlignment="Top">
<ComboBox.ItemTemplate>
<DataTemplate>
<CheckBox Click="chkCategorieStatistiche_Checked" Content="{Binding Path=Descrizione}" Tag="{Binding Path=Codice}" IsChecked="{Binding Path=ISSELECTED}" Name="chkInsideList" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>

allo scattare di un certo evento voglio andare a vedere quali campi sono selezionati della checkbox però non riesco a navigare l'oggetto (e neanche a ricavarlo dalla combobox perchè gli Item della combo sono di tipo DataRowView)
Potreste aiutarmi?

Grazie mille!
Il modo più "pulito" per farlo in WPF non è tanto ispezionando i controlli, ma verificando lo stato della proprietà (nel tuo caso "ISSELECTED") dell'oggetto in binding con essi.

Ciao,
m.
82 messaggi dal 12 novembre 2007
..posso chiederti come dovrei fare?
Dallo snippet di codice che hai postato, leggo che le checkbox sono in binding con una proprietà IsSelected della datasource:
<CheckBox Click="chkCategorieStatistiche_Checked" Content="{Binding Path=Descrizione}" Tag="{Binding Path=Codice}" <b>IsChecked="{Binding Path=ISSELECTED}"</b> Name="chkInsideList" />


Quindi cambiando il check sulla checkbox, ti viene aggiornata la proprietà IsSelected degli oggetti che metti in binding sulla tua combobox; questo credo che da parte tua sia un comportamento voluto, altrimenti perchè avresti messo quel binding?

A questo punto non ti resta che guardare dentro alla collezione di oggetti che costituiscono l'itemsource della combobox (e che metti nel datacontext immagino, visto che leggo <ComboBox ItemsSource="{Binding}"...). Se questi sono DataRowView, non ti resta che controllare quanto vale, per ogni DataRowView, myRowView["IsSelected"].

Dove hai difficoltà?
82 messaggi dal 12 novembre 2007
Avevo provato a vedere una cosa del genere...
For Each drv As DataRowView In cmbCategorieStatistiche.Items
If Not (drv("IsSelected") Is DBNull.Value) AndAlso drv("IsSelected") Then
Stop
End If
Next

però quello che non capisco è come faccio a far cambiare il valore del campo IsSelected al check del Checkbox? dovrebbe essere automatico?
perchè con questo frammento di codice non trovo nessun elemento della checkbox valorizzato..
Non
For Each drv As DataRowView In cmbCategorieStatistiche.Items

ma
For Each drv As DataRowView In collezioneCheColleghiAllaCombo


In pratica: cosa colleghi alla combobox? qual è la sua sorgente dati? Una dataview ad esempio? Cicla su quella collezione.

Ciao,
m.

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.