【问题标题】:How to Add a Scrollbar to Window in C#如何在 C# 中向窗口添加滚动条
【发布时间】:2011-08-29 10:59:54
【问题描述】:

我创建了一个如下窗口:

Window myWindow = new Window();

如何在此 Windows 中添加垂直滚动条并仅在高度不足以显示所有元素时才使滚动条可见。

【问题讨论】:

    标签: c# wpf window vertical-scrolling


    【解决方案1】:

    您不能将滚动条添加到窗口本身。您只能向控件添加滚动条。 IE。到窗口内的网格。

    例子:

    <Grid  ScrollViewer.CanContentScroll="True"
           ScrollViewer.HorizontalScrollBarVisibility="Auto">
       ...
    </Grid>
    

    编辑:

    刚刚意识到 Window 也有一个 ScrollViewer 属性。我不确定这个属性如何用于 Window 以及这样的窗口会是什么样子。试了一下,没有滚动条出现。

    编辑 2:

    ScrollViewer sv = new ScrollViewer();
    sv.VerticalScrollBarVisibility = ScrollBarVisibility.Visible;
    myGrid.Children.Add(sv);
    

    【讨论】:

    • 感谢您的回复。我没有使用 XAML 创建 Grid,而是使用 Programatically usig Grid 创建了它。我要设置 Grid 的哪些属性来获取滚动条?
    • 我没有 ScrollViewer 属性。您使用的是哪个版本的 .NET?
    • @Gunner - 我使用的是 .NET 3.5 SP1。 ScrollViewer 位于 System.Windows.Controls.ScrollViewer
    【解决方案2】:

    您可以在窗口中添加ScrollViewer 元素并将必要的控件放入ScrollViewer 控件中。

    <ScrollViewer VerticalScrollBarVisibility="Auto">
        ...
    </ScrollViewer>
    

    或者,如果您想在代码隐藏文件中编写代码,您可以编写

    ScrollViewer viewer = new ScrollViewer();
    viewer.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
    // append scroll viewer to window
    

    【讨论】:

      【解决方案3】:

      试试这个

      var xpage = your user control or page to which scroll bar need to be added at runtime
      
                  xpage.SetValue(ScrollViewer.CanContentScrollProperty, true);
                  xpage.SetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty, ScrollBarVisibility.Auto);
                  xpage.SetValue(ScrollViewer.VerticalScrollBarVisibilityProperty, ScrollBarVisibility.Auto);
      
                  var scrollViewer = xpage.Content as ScrollViewer;
                  if (scrollViewer != null)
                  {
                      var content = scrollViewer.Content;
                      scrollViewer.Content = null;
                      xpage.Content = content;
                  }
                  else
                  {
                      var content = xpage.Content;
                      xpage.Content = null;
                      xpage.Content = new ScrollViewer { Content = content };
                  }
      

      【讨论】:

        猜你喜欢
        • 2021-10-02
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-21
        • 1970-01-01
        相关资源
        最近更新 更多