首先!我知道这似乎是一种重复的感觉,但实际上并不是。
我有一个网格作为DataGrid.RowDetails
的数据模板。
它有三列:前两列使用Width="Auto"
,第三列使用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