【问题标题】:How to make the last DataGrid's column occupy the whole left space?如何使最后一个DataGrid的列占据整个左侧空间?
【发布时间】: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


【解决方案1】:

我终于找到了灵魂。

刚刚添加ScrollViewer.HorizontalScrollBarVisibility="Disabled"

对于那些以 Framework v4.0 为目标的人
最近我们发现了一个我们的用户有而开发人员没有的错误。该错误再次与 DataGrid 的宽度和对齐方式有关。好吧,这可能不是真正的错误,但我们有不同的控件行为。 研究表明,在安装 .net framework 4.5 时,安装程​​序还更新了 .net framework 4.0。此更新以某种方式改变了 DataGrid 的行为。 (对预期的) 我们要求我们的用户安装框架 4.5,问题就消失了。虽然我们的应用仍然针对 .net 4.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 2018-04-23
    • 2018-05-26
    • 2011-03-25
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多