【问题标题】:WPF Data Grid - How to hide the next column/row that is visible?WPF 数据网格 - 如何隐藏可见的下一列/行?
【发布时间】:2023-03-30 03:00:01
【问题描述】:

我正在使用 WPF 数据网格绑定到对象(即不是数据库)。我在 Stretch 上有水平对齐。我目前将它放在一个边框内,它位于一个网格内。

但是,当我运行应用程序时,DataGrid 显示一个空白列和网格。也就是说我有 5 列和 5 行,然后有一个空白的第 6 列和第 6 行显示。见图片:

问题 - 我怎样才能摆脱这些空白行?请注意,DataGrid 的内容是以编程方式填充的(即不是静态的)。

谢谢

编辑:我修复了额外的行(通过 CanUserAddRows),但右侧的额外列仍然存在问题。

右侧额外列的问题似乎与自动设置列宽有关。 DataGrid 实际上已设置(请参阅下面的 XAML),以便在其右侧有一个 GridSplitter。当我移动 GridSplitter 时,我注意到 DataGrid 列不会自动调整大小。所以总的来说,问题是(a)在启动时有一个部分额外的列可见,以及(b)在移动 GridSplitter 之后它们也没有调整大小。

关于如何让它发挥作用的任何想法?

        <Grid>

            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>

            <Grid Grid.Column="0">
                <Grid.RowDefinitions>
                    <RowDefinition  Height="Auto"/>
                    <RowDefinition  Height="Auto"/>
                    <RowDefinition  Height="*"/>
                </Grid.RowDefinitions>
                <Label Content="Summary" Grid.Row="0" HorizontalAlignment="Center" />
                <Grid Grid.Row="1">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <RadioButton IsChecked="{Binding Path=Period, Converter={StaticResource enumBooleanConverter}, ConverterParameter=AllTime}" Grid.Column="0">All Time</RadioButton>
                    <RadioButton IsChecked="{Binding Path=Period, Converter={StaticResource enumBooleanConverter}, ConverterParameter=Month}" Grid.Column="1">Month</RadioButton>
                    <RadioButton IsChecked="{Binding Path=Period, Converter={StaticResource enumBooleanConverter}, ConverterParameter=Week}" Grid.Column="2">Week</RadioButton>
                    <RadioButton IsChecked="{Binding Path=Period, Converter={StaticResource enumBooleanConverter}, ConverterParameter=Day}" Grid.Column="3">Day</RadioButton>
                </Grid>
                <Border Grid.Row="2">
                    <DataGrid Name="SummaryDataGrid"  HorizontalGridLinesBrush="#FF726868" VerticalGridLinesBrush="#FF726868" AlternatingRowBackground="#FFD0F896" CanUserReorderColumns="False" CanUserResizeRows="False" CanUserAddRows="False" CanUserSortColumns="True" CanUserResizeColumns="False" ColumnWidth="Auto" />
                </Border>

            </Grid>


            <GridSplitter HorizontalAlignment="Right" 
            VerticalAlignment="Stretch" Grid.Column="1" ResizeBehavior="PreviousAndNext"
            Width="5" Background="#FFBCBCBC"/>

            <Grid Grid.Column="2" Name="RTChartGrid">
                <-- CUT -->

            </Grid>


        </Grid>

【问题讨论】:

    标签: c# .net wpf datagrid wpfdatagrid


    【解决方案1】:
    【解决方案2】:

    我只是将一个 Loaded 处理程序附加到 Datagrid 并将所有其他列的宽度设置为 0 并将它们隐藏。

    【讨论】:

      猜你喜欢
      • 2013-04-19
      • 2023-01-17
      • 2011-02-01
      • 1970-01-01
      • 2014-12-19
      • 2011-10-18
      • 2017-06-22
      • 2018-12-20
      • 2014-05-31
      相关资源
      最近更新 更多