Подтвердить что ты не робот

Как заставить последний столбец DataGrid занимать все левое пространство?

Во-первых! Я знаю, что это может показаться своего рода 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. Как это выглядит:

enter image description here

Обновить 2.

Наконец, я нашел душу. Просто добавил ScrollViewer.HorizontalScrollBarVisibility="Disabled"

Теперь это нормально:

enter image description here

Но я не могу понять это странное поведение.

Обновление 3 (может быть полезно кому-то)

Недавно мы обнаружили ошибку, которой пользовались наши пользователи, и разработчики этого не сделали. Ошибка снова связана с шириной и выравниванием DataGrid. Ну, может быть, это не было ошибкой, но у нас было другое поведение контроля.
Исследование показало, что при установке .net framework 4.5 установщик также обновил .net framework 4.0. Это обновление изменило поведение DataGrid. (к ожидаемому)
Мы попросили наших пользователей установить фреймворк 4.5, и проблема исчезла. Хотя наше приложение по-прежнему нацелено на .net 4.0

4b9b3361

Ответ 1

Наконец, я нашел душу.

Только что добавил ScrollViewer.HorizontalScrollBarVisibility="Disabled"

Для тех, кто нацеливает Framework v4.0
Недавно мы обнаружили ошибку, которой пользовались наши пользователи, и разработчики этого не сделали. Ошибка снова связана с шириной и выравниванием DataGrid. Ну, может быть, это не было ошибкой, но у нас было другое поведение контроля. Исследование показало, что при установке .net framework 4.5 установщик также обновил .net framework 4.0. Это обновление изменило поведение DataGrid. (к ожидаемому) Мы попросили наших пользователей установить фреймворк 4.5, и проблема исчезла. Хотя наше приложение по-прежнему нацелено на .net 4.0