Ciao,
se non ho capito male quello che vuoi fare, un binding di questo tipo non è disponibile in maniera "integrata nel framework".
Puoi cmq tranquillamente farti invece un controllo tuo, che dentro abbia la CheckListBox che esponga una proprietà che usi per bindare la quale tramite codice ti vada a settare i check dove serve.
Qualcosa di questo tipo:
public class MiaCheckList : CheckedListBox
{
public MiaCheckList()
{
}
public IEnumerable<string> ValoriScelti {
get {
List<string> lista = new List<string>();
if (this.SelectedItems != null)
{
foreach (ListViewItem item in this.SelectedItems)
lista.Add(item.Text);
}
return lista;
}
set {
if (value != null)
{
this.SelectedIndices.Clear();
foreach (var item in value)
{
int i = this.FindString(item);
if (i >= 0)
this.SetItemChecked(i,true);
}
}
}
}
public IEnumerable<string> ValoriAmmessi {
get
{
List<string> lista = new List<string>();
foreach (ListViewItem item in this.Items)
lista.Add(item.Text);
return lista;
}
set
{
if (value != null)
{
this.Items.Clear();
foreach (string item in value)
this.Items.Add(item);
}
}
}
}
e da codice gli passi le 2 proprietà ad esempio:
miaCheckList1.ValoriAmmessi = new string[] { "Matteo", "Marco", "Antonio", "Andrea" };
miaCheckList1.ValoriScelti = new string[] { "Marco", "Andrea" };
Chiaramente tu adattalo con i dati che hai tu, ma cmq puoi a questo punto bindare la proprietà "ValoriScelti" con magari una proprietà dell'oggetto che sia la collection dei valori del gruppo, se hai come nel tuo caso 3 colonne, puoi farti cmq una proprietà che ti torni i 3 valori come array:
...
public IEnumerable<string> MiaProprieta {
get {
return new string[] { this.Campo1, this.Campo2, this.Campo3 };
}
}
...
e passare quella come binding tra il tuo oggetto "riga" e il controllo, allo stesso modo in cui hai bindato le 2 textbox con il nome ed il cognome...
Ciao.
Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo