【发布时间】:2012-08-10 23:08:45
【问题描述】:
首先! 我知道它看起来像是一种dup,但它不是。
我有一个网格作为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>
如果 Grid 嵌套在一个单元格中,此模板正好显示 3 列。
但是当它用作RowDetaislTemplate 时,会出现第4 个空列。
这让我很生气。
有人知道为什么会发生这种情况吗?
更新 1。外观:
更新 2。
我终于找到了灵魂。刚刚加了ScrollViewer.HorizontalScrollBarVisibility="Disabled"
现在好了:
但我无法理解这种奇怪的行为。
更新 3(可能对某人有帮助)
最近我们发现了一个我们的用户有而开发人员没有的错误。该错误再次与 DataGrid 的宽度和对齐方式有关。好吧,这可能不是真正的错误,但我们有不同的控件行为。
研究表明,在安装 .net framework 4.5 时,安装程序还更新了 .net framework 4.0。此更新以某种方式改变了 DataGrid 的行为。 (对预期的)
我们要求我们的用户安装框架 4.5,问题就消失了。虽然我们的应用仍然针对 .net 4.0
【问题讨论】:
-
你能发一个截图吗,我怀疑问题是父网格给出了一个 * 宽度列
-
@Charleh。你说的对。一列的宽度是*。但是,当此数据模板用作单元格的模板时,一切正常。 RowDetailsTemplate 是个问题。
-
@Charleh。我明天发截图
-
@Charleh。它变得越来越有趣=) 我尝试用简单的标记在家中重现该错误,发现 RowDetailsTemplate 的宽度不受限制。但在我的实际应用程序中,它以某种方式被神奇地限制并完全占据了 ItemsPresenter 的宽度。
-
我认为最好把答案写成答案。我想念你找到了解决方案。
标签: wpf wpfdatagrid