Hi,
my xamgrid contains some columns and child columns:
<ig:TextColumn /><ig:TextColumn /><ig:ColumnLayout > <ig:ColumnLayout.Columns><ig:TextColumn /> <XamGridColumns:XamComboEditorColumn />
If i collapse and expand the parent row again the content of the XamComboEditorColumn changes. The other columns keep their content, the cells within the XamComboEditorColumn exchange their content as mentioned. AdjustDisplayElement is called twice for each cell.
Please help, thanks.
I tried with the ComboBox column that Devin supplied in his post, and the values don't "change" nothing happens.
What exactly do you mean by they change?
Can you attach your sample?
Thanks,
-SteveZ
Change means
ParentRow
TextColumn CustomComboBoxColumn
Row1 TestX SelectedItem_X
Row2 TestY SelectedItem_Y
After collapsing and re-expanding
Row1 TestX SelectedItem_Y
Row2 TestY SelectedItem_X
Do we have a resolution to bind the ItemSource of the Combobox column to a child list/property of the view model? I am trying to use a Combbox column in a similar scenario.
Deepa
One thing is a bit ugly about the solution.
If you catch the event for the selection changing in the comboboxes it will be called several times with partly "wrong" data.
it works finally, thank you very much!
Ok, so comboBox and listBox can a bit of a pain to bind to in a recycling scenario, b/c SelectedItem and ItemSource are tied together.
So, when you kill the DataContext for a row, which is expected b/c it's being recycled, the binding says, that the SelectedItem must not be valid anymore, and sets it to null.
So.. with that said, you'll have to move some code around.
First store off the cell binding in ResolveDisplayElement:
_cellBinding = cellBinding;
Then move all your SetBinding logic to AdjustDisplayElement, like so:
public override void AdjustDisplayElement(Cell cell)
{
ComboBoxColumn column = (ComboBoxColumn)cell.Column;
this._combobox.ClearValue(ComboBox.SelectedItemProperty);
Binding b = new Binding();
b.Source = cell.Row.Data;
b.Path = new PropertyPath(column.ItemSourceMemberPath);
this._combobox.SetBinding(ComboBox.ItemsSourceProperty, b);
this._combobox.SetBinding(ComboBox.SelectedItemProperty, _cellBinding);
base.AdjustDisplayElement(cell);
}
Now, everything should work as expected.
I think the problem is, that the underlying content of a row is cleared after it is collapsed. Thats the reason why null is stored to SelectedEquipment. Therefore it is empty after expanding again. Is it possible to keep the content of the row?