Во-первых! Я знаю, что это может показаться своего рода dup, но это не так.
У меня есть сетка в качестве шаблона данных для DataGrid.RowDetails
.
Он имеет три столбца: два с Width="Auto"
и 3d с Width="*"
<DataTemplate x:Key="NotEmptyDistributionsTemplateKey">
<DataGrid ItemsSource="{Binding SoftwareVersionDistributions}"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserReorderColumns="False"
CanUserResizeColumns="True"
CanUserSortColumns="False"
IsReadOnly="True"
CanUserResizeRows="False"
AutoGenerateColumns="False"
RowHeaderWidth="0"
Margin="20,5"
HorizontalAlignment="Stretch">
<DataGrid.Columns>
<DataGridTextColumn
Header="Architecture"
Binding="{Binding SoftwareArchitecture.Name, TargetNullValue=Все, FallbackValue=Все}"
Width="Auto"/>
<DataGridTextColumn
Header="Language"
Binding="{Binding SysCodepage.Title, TargetNullValue=Все, FallbackValue=Все}"
Width="Auto"/>
<DataGridHyperlinkColumn
Header="Link"
Binding="{Binding DownloadLink}"
Width="*"
CanUserResize="False"/>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
Этот шаблон показывает ровно 3 столбца, если сетка вложена в ячейку.
Но когда он используется как RowDetaislTemplate
появляется 4-й пустой столбец.
Это делает меня сумасшедшим.
Есть ли у кого-нибудь идеи, почему это может произойти?
Обновление 1. Как это выглядит:
Обновить 2.
Наконец, я нашел душу. Просто добавилScrollViewer.HorizontalScrollBarVisibility="Disabled"
Теперь это нормально:
Но я не могу понять это странное поведение.
Обновление 3 (может быть полезно кому-то)
Недавно мы обнаружили ошибку, которой пользовались наши пользователи, и разработчики этого не сделали. Ошибка снова связана с шириной и выравниванием DataGrid. Ну, может быть, это не было ошибкой, но у нас было другое поведение контроля.
Исследование показало, что при установке .net framework 4.5 установщик также обновил .net framework 4.0. Это обновление изменило поведение DataGrid. (к ожидаемому)
Мы попросили наших пользователей установить фреймворк 4.5, и проблема исчезла. Хотя наше приложение по-прежнему нацелено на .net 4.0