【问题标题】:Wrappanel and scrollviewer issueWrappanel 和滚动查看器问题
【发布时间】:2010-07-12 11:48:45
【问题描述】:

我需要显示Buttons,用户可以使用它来添加控件。 Buttons 被分组。这是我拥有的 XAML -

<ScrollViewer
    VerticalScrollBarVisibility="Auto">
    <GroupBox
        Name="maingroup"
        Header="Click To Add Controls"
        BorderBrush="Transparent">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition
                    Height="*" />
                <RowDefinition
                    Height="90" />
            </Grid.RowDefinitions>

            <GroupBox
                Grid.Row="0"
                Name="groupVarControls"
                Header="{Binding Path=GroupBoxHeaderText, Mode=OneWay}">
                <ScrollViewer
                    HorizontalScrollBarVisibility="Auto"
                    VerticalScrollBarVisibility="Hidden">
                    <WrapPanel
                        Margin="7,7,0,0"
                        AllowDrop="False">
                        <syncfusion:RibbonButton
                            SizeForm="Large"
                            Name="BarControl"
                            LargeIcon="Images\Bar.png"
                            Label="Bar"
                            AllowDrop="True">
                        </syncfusion:RibbonButton>

                     <!-- 10 More buttons -->

                    </WrapPanel>
                </ScrollViewer>
            </GroupBox>

            <GroupBox
                Grid.Row="1"
                Name="groupVarControls2"
                Visibility="{Binding Path=GroupBoxVisibility, Mode=OneWay}"
                Header="Click to Add control">
                <ScrollViewer
                    VerticalScrollBarVisibility="Hidden"
                    HorizontalScrollBarVisibility="Auto">
                    <WrapPanel
                        Margin="7,7,0,0"
                        AllowDrop="False">
                        <syncfusion:RibbonButton
                            SizeForm="Large"
                            Name="ClockControl"
                            AllowDrop="False"
                            LargeIcon="Images\Clock.png"
                            Label="Clock"
                            Click="ClockControl_Click" />

                      <!-- More buttons -->

                    </WrapPanel>
                </ScrollViewer>
            </GroupBox>
        </Grid>
    </GroupBox>
</ScrollViewer>

我想要一个垂直的 ScrollBar 通用 WrapPanel 和单独的水平 ScrollBar。由于此 XAML 滚动条无法正确显示,ScrollViewer 导致包装被“禁用”,它只是将我的控件留在单个row(或column)中,并立即使用ScrollBar

我不能给WrapPanel一个固定的widht,因为这个控件将显示在DockPanel(类似于VS工具箱)中,用户可以对其进行修改。

有什么想法吗?

【问题讨论】:

    标签: c# wpf scrollviewer .net wrappanel


    【解决方案1】:

    此代码将在需要时显示一个垂直滚动条和两个水平滚动条。在您的代码中,您需要将换行面板的 MinWidth 设置为最宽子项的宽度。您可能可以在处理用户添加或删除控件的代码中轻松做到这一点。

    <ScrollViewer 
        VerticalScrollBarVisibility="Auto">
        <StackPanel>
            <GroupBox Header="Box 1">
                <ScrollViewer 
                    VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Auto">
                    <WrapPanel 
                        MinWidth="200"
                        Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ScrollViewer}}, Path=ActualWidth}">
                        <Button Width="200" Height="50" />
                        <Button Width="150" Height="50" />
                        <Button Width="160" Height="50" />
                        <Button Width="170" Height="50" />
                        <Button Width="180" Height="50" />
                    </WrapPanel>
                </ScrollViewer>
            </GroupBox>
            <GroupBox Header="Box 2">
                <ScrollViewer 
                    VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Auto">
                    <WrapPanel 
                        MinWidth="200"
                        Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ScrollViewer}}, Path=ActualWidth}">
                        <Button Width="200" Height="50" />
                        <Button Width="150" Height="50" />
                        <Button Width="160" Height="50" />
                        <Button Width="170" Height="50" />
                        <Button Width="180" Height="50" />
                    </WrapPanel>
                </ScrollViewer>
            </GroupBox>
        </StackPanel>
    </ScrollViewer>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多