Изменения ширины колонок в GridViewColumnCo

 
0
 
.NET
ava
Flap | 16.11.2012, 14:38
Не дайте разочароваться в WPF, вторую неделю бьюсь над одной проблемой и почти победил ее.
Всем известная разметка для сложных заголовков:

------------------------------------
| | Набор 1 |
| Дата -------------------------
| | зн1 | зн2 | зн3 |
------------------------------------

Во всех источниках, где я встречал подобную реализацию, пишут, что надо допиливать. Но как? Опыта не хватает.
Начну по порядку. Есть такая таблицу, обратите внимание на второй столбец

<DataGrid Name="grid2"
AutoGenerateColumns="False"
CanUserResizeColumns="False"
>
<DataGrid.Columns>
<DataGridTextColumn Header="Дата" Binding="{Binding rn}"
Width="50"
/>
<DataGridTemplateColumn Header="Набор1" x:Name="nabor1"
Width="200"
CanUserResize="False"
HeaderTemplate="{StaticResource MultiColumnHeaderTemplate}"
CellTemplate="{StaticResource MultiColumnCellTemplate}"/>
<DataGridTextColumn Header="Остальное" Binding="{Binding name}"
Width="70"/>
</DataGrid.Columns>
</DataGrid>


Шаблон для второго столбца такой:

<DataTemplate x:Key="MultiColumnHeaderTemplate">
<Grid Margin="-4" HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Border BorderBrush="Black" BorderThickness="1">
<TextBlock Text="{Binding}" HorizontalAlignment="Center"/>
</Border>

<Border BorderBrush="Blue" BorderThickness="1" Grid.Row="1" >
<GridViewHeaderRowPresenter
HorizontalAlignment="Stretch"
Columns="{DynamicResource ColumnCollection}">
</GridViewHeaderRowPresenter>
</Border>
</Grid>
</DataTemplate>


Ну и сама коллекция столбцов:

<GridViewColumnCollection x:Key="ColumnCollection">
<GridViewColumn Header="Зн1" DisplayMemberBinding="{Binding Path=rn}"
Width="50"/>
<GridViewColumn Header="Зн2" DisplayMemberBinding="{Binding Path=name}"
Width="50"/>
<GridViewColumn Header="Зн3" DisplayMemberBinding="{Binding Path=name}"
Width="50"/>
</GridViewColumnCollection>



Проблемма в следующем:
Я уже давно оставил надежду, чтобы у меня ширина столбцов зн1, зн2 и зн3 менялась пропорционально их общему "Набор1" (через Width="*"). smile
Поэтому запретил изменение столбцов вообще.
Но вон незадача: основные столбцы, как и положено, перестали растягиваться. А столбцы зн1, з2 и зн3 по прежнему тянутся во все стороны.
Как запретить изменение их размера пользователем?
И подскажите еще, как сделать так, чтобы шаблон "набор1" растянулся на весь столбец? Сейчас он растягивается только на суммарную длину трех своих "подстолбцов". А хотелось бы чтобы он растянулся на ширину указанную в поле Width у DataGridTemplateColumn, и все его подстолбики растянулись бы пропорционально.
Либо как вариант: как сделать так, чтобы при увеличении ширины зн2, ширина зн3 пропорционально уменьшалась?

Такое впечатление, что Microsoft бросила этот компонент на середине, либо запрятала все так далеко, что я даже не знаю в какую сторону копать smile
Проект прилагаю.

Спасибо тем, кто дочитал до конца. Очень рассчитываю на вашу помощь.
Comments (0)

Comments are not added

Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  Flap
advanced
Submit