【问题标题】:How to fill width of last column at DevExpress GridControl?如何在 DevExpress GridControl 中填充最后一列的宽度?
【发布时间】:2017-10-26 00:45:26
【问题描述】:

我有 DevExpress GridControl,它有 7 列。 我试图将最后一列向右展开,但没有任何反应。 反而是柱子拉伸了一段距离,在网格的右边缘有一个没有名字的空柱子,不能拉伸。

所以,我尝试用谷歌搜索:我找到了一些类似 this 的答案,但它对我不起作用。

这里有点 XAML,我删除了所有绑定。

<dxg:GridControl Grid.Row="0"
                x:Name="dgGrid"
                VerticalAlignment="Stretch"
                HorizontalAlignment="Stretch"
                dx:ThemeManager.ThemeName="Seven"

                ScrollViewer.CanContentScroll="True"
                ScrollViewer.HorizontalScrollBarVisibility="Auto"
                ScrollViewer.VerticalScrollBarVisibility="Auto"
                >

    <dxg:GridControl.View>
        <!--region #RowCellMenuCustomization-->
        <dxg:TableView x:Name="view" AutoWidth="True" NavigationStyle="Cell">
            <dxg:TableView.RowCellMenuCustomizations>
                <dxb:BarButtonItem Content="Link"
                                ItemClick="CellDataItem_Link_ItemClick"
                                ></dxb:BarButtonItem>

                <dxb:BarButtonItem Content="UnLink"
                                ItemClick="CellDataItem_UnLink_ItemClick"
                                ></dxb:BarButtonItem>
            </dxg:TableView.RowCellMenuCustomizations>
        </dxg:TableView>
        <!--endregion #RowCellMenuCustomization-->
    </dxg:GridControl.View>

    <dxg:GridControl.Columns>

        <dxg:GridColumn Header="Column0"
                    AllowEditing="False"
                    HorizontalHeaderContentAlignment="Stretch"
                    FixedWidth="True"
                    AllowResizing="True"
                    MinWidth="80"
                    ></dxg:GridColumn>

        <dxg:GridColumn Header="Column1"
                    AllowEditing="False"
                    HorizontalHeaderContentAlignment="Stretch"
                    FixedWidth="True"
                    AllowResizing="True"
                    MinWidth="80"
                    ></dxg:GridColumn>

        <dxg:GridColumn Header="Column2"
                    AllowEditing="False"
                    HorizontalHeaderContentAlignment="Stretch"
                    AllowResizing="True"
                    FixedWidth="True"
                    Visible="False"
                    MinWidth="80"
                    ></dxg:GridColumn>

        <dxg:GridColumn Header="Column3"
                    HorizontalHeaderContentAlignment="Center"
                    AllowEditing="False"
                    Width="35"
                    FixedWidth="True"
                    AllowResizing="False"
                    ></dxg:GridColumn>

        <dxg:GridColumn Header="Column4"
                    HorizontalHeaderContentAlignment="Center"
                    FixedWidth="True"
                    AllowEditing="False"
                    AllowResizing="False"
                    Width="35"
                    ></dxg:GridColumn>

        <dxg:GridColumn Header="Column5"
                    HorizontalHeaderContentAlignment="Stretch"
                    FixedWidth="True"
                    AllowEditing="False"
                    AllowResizing="True"
                    MinWidth="170"
                    ></dxg:GridColumn>

        <dxg:GridColumn Header="Column6"
                    HorizontalHeaderContentAlignment="Stretch"
                    AllowEditing="False"
                    AllowResizing="True"
                    Width="*"
                    Fixed="None"
                    BestFitMode="Default"
                    BestFitArea="All"
                    MinWidth="130"
                    FixedWidth="False"
                    />

    </dxg:GridControl.Columns>
</dxg:GridControl>

同时我使用BestFit方法,在加载GridControl时有效:

private void Grid_Loaded(object sender, RoutedEventArgs e)
{
    ((TableView)this.view).BestFitArea = BestFitArea.All;
    var visibleColumns = ((TableView)this.view).VisibleColumns;
    ((TableView)this.view).BestFitColumns();
}

请你帮我把最后一列 (Column6) 的宽度调整到网格的末尾吗?

【问题讨论】:

  • 是否有任何 autogenerateColumns 依赖属性?如果有,那么您可以将它设置为 false 并检查。
  • @AbhinavSharma,我不使用任何 AutogenerateColumns 属性。我的名字不像 'Column0' 它像:Name、City 等等。

标签: c# wpf devexpress gridcontrol


【解决方案1】:

TableView.AutoWidth 属性是您正在寻找的。您已经设置了它,但是您的Column6 中有错误。列的Width 不能设置为"*"。所以,我使用了你的代码,删除了Width="*",结果如下:

【讨论】:

    【解决方案2】:

    事实上,如果您使用的是16.1或更新版本,将“*”设置为列宽应该可以正常工作。我已经根据您的代码和 sn-p:

    创建了一个测试项目

    在 GridColumn.Width 属性中使用 '*' 可以启用 按比例调整列大小 功能,但它在旧版本中不可用。想了解更多关于这个功能,请参考Columns Layout and Width

    如果您有旧版本,请启用AutoWidth 选项。

    【讨论】:

    • 我有16.2版本
    • @Admiral Land,我根据您的描述创建了一个测试项目,似乎最后一列已正确拉伸。奇怪的是这段代码对你不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    相关资源
    最近更新 更多