2011-05-20 31 views
16

C# Window bir kaydırma çubuğu Ekleme:şöyle bir pencere oluşturduk

Window myWindow = new Window(); 

Bu Windows'a Dikey Kaydırma Çubuğu eklemek ve Yükseklik değil mi' eğer kaydırma çubuğu yalnızca görünür hale nasıl t tüm öğeleri göstermek için yeterince büyük.

cevap

40

Sen pencereye bir ScrollViewer öğesi ekleyin ve ScrollViewer kontrolüne gerekli kontrolleri koyabiliriz. Eğer bunu kod istiyorsanız

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

Veya kod arkada sen

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

+ 1: Bu hile yaptı. –

2

Pencerenin kendisine kaydırma çubuğu ekleyemezsiniz. Sadece kaydırma çubuklarını kontrollere ekleyebilirsiniz. I.E. pencerenizin içindeki bir ızgaraya.

Örnek:

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

DÜZENLEME:

Sadece o Pencere aynı zamanda bir ScrollViewer özelliğine sahiptir gerçekleşmiştir. Bu özelliğin bir Pencere için nasıl çalıştığından ve böyle bir pencerenin nasıl görüneceğinden emin değilim. Denedim, ama kaydırma çubukları görünmüyor.

DÜZENLEME 2:

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

Teşekkür denemek yazabilirsiniz dosya. XAML kullanarak Izgara oluşturmak yerine, Programatik usig Grid'i kullanarak oluşturdum. Bir Scrollbar almak için Grid'in hangi özelliklerini ayarlıyorum? –

+1

ScrollViewer Özelliğim yok. .NET'in hangi sürümünü kullanıyorsunuz? –

+1

@Gunner - .NET 3.5 SP1 kullanıyorum. ScrollViewer, System.Windows.Controls.ScrollViewer içinde – Christian

0

cevap için bu

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 }; 
      }