ScrollViewer不能在组框内工作

本文关键字:工作 不能 ScrollViewer | 更新日期: 2023-09-27 18:05:39

我想在我的Groupbox中包括ScrollViewer,但它不工作。我的代码是:

<GroupBox 
           Margin="10,10,0,0"
            Grid.Row="0"
            Grid.ColumnSpan="3"
            Height="150"           
            >
                    <ScrollViewer>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="*" />
                    <RowDefinition Height="*"/>
                    <RowDefinition Height="*"/>
                    <RowDefinition Height="*"/>
                    
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="140"/>
                    <ColumnDefinition Width="120"/>
                    <ColumnDefinition Width="100"/>
                </Grid.ColumnDefinitions>
               
                <Label 
                    Margin="0,6,0,0"
                    Content="SSID"
                    Grid.Row="0"
                    >      
                </Label>
                
                <TextBox
                      Margin="0,6,0,6"
                    Grid.Column="1">
                    
                </TextBox>
                <Label 
                     Margin="0,6,0,0"
                    Content="(1024)"
                    Grid.Column="2"
                    >
                </Label>
                <Label 
                     Margin="0,6,0,0"
                    Content="Authentication Mode"
                    Grid.Column="0"
                    
                    Grid.Row="1"
                    >
                </Label>
                <ComboBox 
                        Margin="0,6,0,6" 
                Grid.Row="1"
                Grid.Column="1"
                ItemsSource="{Binding ACAvailableSecurityTypes}"
                SelectedItem="{Binding ACSelectedSecurityType}"
                />
                <Label
                    
                      Margin="0,6,0,0"
                    Grid.Row="2"
                       Grid.Column="0"
                       Content="VLAN"
                      />
                
                <TextBox
                      Margin="0,6,0,6"
                    Grid.Row="2"
                    Grid.Column="1"
                    />
            
                <Label Grid.Row="2"
                       Grid.Column="2"
                    Content="(1-4094)"/>
                
                <Button
                    Grid.Row="3"
                    Grid.Column="2"
                    Content="Add SSID"
                    HorizontalAlignment="Left"
                    Width="70"
                    Style="{StaticResource AppButtons}"/>
            </Grid>
                    </ScrollViewer>
                </GroupBox>

ScrollViewer不能在组框内工作

为了看到你的滚动条,你的scrollviewer的高度应该小于你的分组框,这样做,你可以看到滚动条,设置高度VerticalScrollBarVisibility

 <ScrollViewer Height="100" VerticalScrollBarVisibility="Auto">
            <GroupBox 
           Margin="10,10,0,0"
            Grid.Row="0"
            Grid.ColumnSpan="3"
            Height="150"           
            >
           ......
        </GroupBox>
 </ScrollViewer>

ScrollViewer放在GroupBox外面,而不是里面:

<ScrollViewer>
    <GroupBox Margin="10,10,0,0"
              Grid.Row="0"
              Grid.ColumnSpan="3"
              Height="150" >
        ...
        ...
    </GroupBox>
</ScrollViewer>

GroupBox放置在ScrollViewer中会导致GroupBox页眉在滚动时消失

我解决了这个问题,通过设置ScrollViewerHeight来匹配GroupBox Height,将ScollViewer保持在GroupBox内:

<GroupBox Header="Testing 123">
    <ScrollViewer Height="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=GroupBox}, Path=ActualHeight}">
        <Image .../>
    </ScrollViewer>
</GroupBox>