Стандартный WPF 4 Датагрид.
Допустим, у меня есть сетка данных шириной 200 пикселей и 2 столбца. Мне бы хотелось, чтобы столбцы всегда занимали все пространство, то есть если пользователь изменяет размер первого столбца до 50 пикселей, последний из них будет 150.
Первоначально я установил ширину 100 пикселей для 1-го столбца и * для последнего (в XAML).
Я думал, что проблема в удалении виртуального 3-го столбца, как описано здесь:
http://wpf.codeplex.com/Thread/View.aspx?ThreadId=58939
но на самом деле нет никакой разницы - тем не менее, при изменении размера столбцов, я получаю дополнительное пространство справа - с виртуальным столбцом, это виртуальный столбец (по умолчанию белого цвета), без него это пустое пространство (по умолчанию серый).
ВОПРОС : как применить ограничение, независимо от того, как пользователь изменяет размеры столбцов,
sum(columns width)==datagrid width
редактирует
Да, я использую WPF 4.
* 1026 Временное решение *
Я пометил один из ответов как решение, но на самом деле это не решение из-за дизайна WPF. Это просто то, что WPF может делать в лучшем случае, и это не очень хорошо - прежде всего, опция CanUserResize для столбца означает действительно IsResizeable, и эта опция при включении противоречит Width, установленному в *. Так что без какой-то действительно хитрой уловки вы получите:
datagrid, последний столбец которого имеет поверхностно изменяемый размер, но на самом деле это не так, и отображается небольшое пространство справа (т. Е. Виртуальный столбец не имеет изменяемого размера) - для последнего столбца: CanUserResize = true, Width = *
datagrid, последний столбец которого не может быть изменен пользователем, и он отображается соответственно, изначально не отображается пробел справа, но он может отображаться, когда пользователь изменяет размер любого элемента таблицы данных - для последнего столбца: CanUserResize = false , Ширина = *
Пока что я вижу две проблемы с сеткой данных WPF:
- вводящее в заблуждение название
- противоречие особенностей
Я до сих пор не могу понять, как на самом деле решить эту проблему.