| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > WPF и Silverlight > Выравнивание DataGrid в Expander |
| Автор: interv 21.10.2013, 09:55 | ||
Есть окошко
в превьюве отображается дрянь (то же и в откомпилиной программе), колонки не растягиваются по ширине таблицы. если у Grid задать фиксированный Width, то все в порядке. |
| Автор: dzaraev 21.10.2013, 12:46 |
| Я не знаю, что я делаю не так, но у меня всё красиво, воспроизведите проблемы на моём примере, если что. |
| Автор: interv 21.10.2013, 14:55 |
| Действительно, возможно ошибка глубже.. Будем капать. Спасибо. |
| Автор: interv 22.10.2013, 07:38 | ||
В общем вот глючная разметка, совсем забыл сказать, DataGrid выступает в виде RowDetailsTemplate у DataGrid'а
|
| Автор: dzaraev 25.10.2013, 07:23 |
| Всё просто, вы использовали звездочки в значениях DataGridTextColumn.Width. Но такой синтаксис прокатывает только для тех элементов, у которых свойства Height/Width имеют тип http://msdn.microsoft.com/ru-ru/library/vstudio/system.windows.gridlength(v=vs.100).aspx (например классы ColumnDefinition/RowDefinition) и с которыми связан экземпляр http://msdn.microsoft.com/ru-ru/library/vstudio/system.windows.gridunittype(v=vs.100).aspx. Вы же используете класс DataGridTextColumn, у которого свойство Width/Height имеет тип double. Wpf знает, как превратить звёздочку * в GridLength, но не знает, как её превратить в double. В итоге во время выполнения ваши колонки получают в свойствах Width значение double.NaN и все колонки оказываются свёрнутыми. Что я изменил в вашем примере: значения свойств DataGridTextColumn.Width переставил на Auto - этот синтаксис WPF "понимает" для данного класса. Плюс добавил несколько свойств и данных, просто чтобы увидеть грид "в работе". |
| Автор: interv 2.12.2013, 08:34 |
| Большое спасибо, но auto не подойдет, мне нужно что-то подобное. На данный момент перехватываю события изменения колонок родительского DataGrid, и устанавливаю фактическую ширину у Expander по сумме фактических размеров колонок в пикселях. Вот такой костыль. В инете до сих пор ответа не нашел. ЗЫ: DataGridTextColumn.Width имеет тип DataGridLength, а вот свойство ActualWidth уже имеет тип Double. Пожалуйста не путайте. |