【问题标题】:Xaml Responsive DataGrid with Scroll Bar带有滚动条的 Xaml 响应式 DataGrid
【发布时间】:2018-03-05 17:37:08
【问题描述】:

我有一个附加了 Datagrid 的网格。我在创建一个随着窗口调整大小而调整大小的数据网格时遇到问题。我已经设置了 MinHeight 和 MinWidth,但它似乎只是创建了一个静态的 Height 和 Width。我也将滚动条设置为可见,但没有出现滚动条?

我最接近响应式设计的是设置我的 Height="2300" 和 Width="2700",但滚动条仍然没有出现。我计划用来填充我的 Datagrid 的表格可能会比这些尺寸大得多,并且需要滚动。

我曾尝试使用其他 SE 问题中的技术,但似乎没有任何效果符合我的预期。

    <!--Grid View Assett Info - Populate Table from DB -->
    <Grid x:Name="grid_AssetView"  VerticalAlignment="Top" Margin="10,236,10,10" Style="{StaticResource Grid_Shadow}">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <DataGrid VerticalAlignment="Top" 
                  Margin="0,0,0,0" 
                  Grid.Column="0"  Grid.Row="0" 
                  ScrollViewer.CanContentScroll ="True" 
                  ScrollViewer.VerticalScrollBarVisibility="Auto" 
                  ScrollViewer.HorizontalScrollBarVisibility="Auto" 
                  MinWidth="772" MinHeight="230"/>
    </Grid>

我的样式表

        <Style x:Key="Grid_Shadow" TargetType="Grid">
            <Setter Property="Background" Value="#FFF9FBFD"/>
            <Setter Property="BitmapEffect">
                <Setter.Value>
                    <DropShadowBitmapEffect
                        Color="Black"
                        Direction="320"
                        ShadowDepth="10"
                        Softness="50"
                        Opacity="0.1">

                    </DropShadowBitmapEffect>
                </Setter.Value>
            </Setter>
        </Style>

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

    你必须如下设置 ColumnDefinition Width="*" 而不是 "Auto"

    <!--Grid View Assett Info - Populate Table from DB -->
    <Grid x:Name="grid_AssetView"  VerticalAlignment="Top" Margin="10,236,10,10" Style="{StaticResource Grid_Shadow}">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <DataGrid VerticalAlignment="Top" 
                  Margin="0,0,0,0" 
                  Grid.Column="0"  Grid.Row="0" 
                  ScrollViewer.CanContentScroll ="True" 
                  ScrollViewer.VerticalScrollBarVisibility="Auto" 
                  ScrollViewer.HorizontalScrollBarVisibility="Auto" 
                   MinHeight="230"/>
    </Grid>
    

    然后数据网格将自动调整大小。我还删除了 MinWidth 以表明调整大小没有问题。

    如果有内容,滚动条也会可见。

    希望对你有帮助。

    【讨论】:

    • 非常感谢,那么 Auto 的用途是什么?我想我首先需要 Auto,然后如果我要添加为第二列,我会使用 * 来拆分。
    • 没关系,我在这里找到了答案:stackoverflow.com/questions/3164651/…
    • 乐于助人:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 2012-05-23
    • 2011-10-06
    • 1970-01-01
    相关资源
    最近更新 更多