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