Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
A ScrollBar, Thumb kaydırarak geçerli görüntüleme alanının dışındaki içeriği görünür hale getirip görüntülemenizi sağlar. Kullanıcı arabirimindeki içerik genellikle bilgisayar ekranının görüntüleme alanından daha büyüktür ve ScrollBar, Windows Presentation Foundation (WPF) uygulamalarında kullanılan temel kaydırma mekanizmasını sağlar.
WPF uygulamalarında kaydırmayı etkinleştiren önceden tanımlanmış iki öğe vardır: ScrollBar ve ScrollViewer. ScrollViewer denetimi, diğer görünür öğeleri kaydırılabilir bir alanda göstermek için yatay ve dikey ScrollBar öğelerini ve bir içerik kapsayıcısını (örneğin, bir Panel öğesi) kapsüller. ScrollBar öğesini içerik kaydırma için kullanmak üzere özel bir nesne oluşturmanız gerekir. Ancak, ScrollViewer işlevselliğini kapsayan bir bileşen kontrolü olduğundan, ScrollBar öğesini tek başına kullanabilirsiniz.
| Başlık | Description |
|---|---|
| ScrollBar Üzerinde Başparmak Boyutunu Özelleştirme | ScrollBar denetiminde başparmak öğesinin boyutunu özelleştirmeyi öğrenin. |
Temel kavramlar
Fiziksel ve mantıksal kaydırma karşılaştırması
Fiziksel kaydırma, içeriği önceden belirlenmiş bir fiziksel artışla (genellikle piksel cinsinden bildirilen bir değerle) kaydırmak için kullanılır. Mantıksal kaydırma, mantıksal ağaçta bir sonraki öğeye kaydırmak için kullanılır. Fiziksel kaydırma çoğu öğe için Panel varsayılan kaydırma davranışıdır. WPF her iki kaydırma türünü de destekler.
IScrollInfo arabirimi, bir ScrollViewer veya türetilmiş bir denetim içindeki ana kaydırma alanını temsil eder. Arayüz, fiziksel bir artış yerine mantıksal birim üzerinden kaydırma gerektiren Panel öğeleri tarafından uygulanabilen tüm kaydırma özelliklerini ve yöntemlerini tanımlar. Bir IScrollInfo örneğini türev Panel olarak dönüştürmek ve ardından kaydırma işlevlerini kullanmak, piksel artışı yerine alt koleksiyondaki bir sonraki mantıksal birime kaydırmak için kullanışlı bir yol sağlar.
StackPanel ve VirtualizingStackPanel, IScrollInfo'yu uygular ve yerel olarak mantıksal kaydırmayı destekler. Mantıksal kaydırmayı yerel olarak destekleyen düzen denetimleri için, konak Panel öğesini bir ScrollViewer içinde kaydırarak ve CanContentScroll özelliğini false olarak ayarlayarak fiziksel kaydırmayı yine de gerçekleştirebilirsiniz.
Örnekler
İçerik kaydırma için IScrollInfo kullanma
Aşağıdaki kod örneği, bir IScrollInfo örneğinin StackPanel olarak nasıl dönüştürüleceğini ve arabirimin tanımladığı içerik kaydırma yöntemlerini (LineUp ve LineDown) kullanmayı gösterir.
private void spLineUp(object sender, RoutedEventArgs e)
{
((IScrollInfo)sp1).LineUp();
}
private void spLineDown(object sender, RoutedEventArgs e)
{
((IScrollInfo)sp1).LineDown();
}
Private Sub spLineUp(ByVal sender As Object, ByVal args As RoutedEventArgs)
CType(sp1, IScrollInfo).LineUp()
End Sub
Private Sub spLineDown(ByVal sender As Object, ByVal args As RoutedEventArgs)
CType(sp1, IScrollInfo).LineDown()
End Sub
ScrollBar öğeleriyle ScrollViewer oluşturma
Aşağıdaki örnek, bazı metinler ve bir dikdörtgen içeren bir pencerede ScrollViewer oluşturur. ScrollBar öğeleri yalnızca gerekli olduğunda görünür. Pencereyi yeniden boyutlandırdığınızda, ScrollBar ve ComputedHorizontalScrollBarVisibility özelliklerinin güncelleştirilmiş değerleri nedeniyle ComputedVerticalScrollBarVisibility öğeleri görünür ve kaybolur.
// Create the application's main window
mainWindow = gcnew System::Windows::Window();
mainWindow->Title = "ScrollViewer Sample";
// Define a ScrollViewer
myScrollViewer = gcnew ScrollViewer();
myScrollViewer->HorizontalScrollBarVisibility = ScrollBarVisibility::Auto;
// Add Layout control
myStackPanel = gcnew StackPanel();
myStackPanel->HorizontalAlignment = HorizontalAlignment::Left;
myStackPanel->VerticalAlignment = VerticalAlignment::Top;
TextBlock^ myTextBlock = gcnew TextBlock();
myTextBlock->TextWrapping = TextWrapping::Wrap;
myTextBlock->Margin = System::Windows::Thickness(0, 0, 0, 20);
myTextBlock->Text = "Scrolling is enabled when it is necessary. Resize the Window, making it larger and smaller.";
Rectangle^ myRectangle = gcnew Rectangle();
myRectangle->Fill = Brushes::Red;
myRectangle->Width = 500;
myRectangle->Height = 500;
// Add child elements to the parent StackPanel
myStackPanel->Children->Add(myTextBlock);
myStackPanel->Children->Add(myRectangle);
// Add the StackPanel as the lone child of the ScrollViewer
myScrollViewer->Content = myStackPanel;
// Add the ScrollViewer as the Content of the parent Window object
mainWindow->Content = myScrollViewer;
mainWindow->Show();
// Create the application's main window
mainWindow = new Window ();
mainWindow.Title = "ScrollViewer Sample";
// Define a ScrollViewer
myScrollViewer = new ScrollViewer();
myScrollViewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
// Add Layout control
myStackPanel = new StackPanel();
myStackPanel.HorizontalAlignment = HorizontalAlignment.Left;
myStackPanel.VerticalAlignment = VerticalAlignment.Top;
TextBlock myTextBlock = new TextBlock();
myTextBlock.TextWrapping = TextWrapping.Wrap;
myTextBlock.Margin = new Thickness(0, 0, 0, 20);
myTextBlock.Text = "Scrolling is enabled when it is necessary. Resize the Window, making it larger and smaller.";
Rectangle myRectangle = new Rectangle();
myRectangle.Fill = Brushes.Red;
myRectangle.Width = 500;
myRectangle.Height = 500;
// Add child elements to the parent StackPanel
myStackPanel.Children.Add(myTextBlock);
myStackPanel.Children.Add(myRectangle);
// Add the StackPanel as the lone child of the ScrollViewer
myScrollViewer.Content = myStackPanel;
// Add the ScrollViewer as the Content of the parent Window object
mainWindow.Content = myScrollViewer;
mainWindow.Show ();
'Define a ScrollViewer.
Dim myScrollViewer As New ScrollViewer
myScrollViewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto
'Add Layout control.
Dim myStackPanel As New StackPanel
myStackPanel.HorizontalAlignment = System.Windows.HorizontalAlignment.Left
myStackPanel.VerticalAlignment = System.Windows.VerticalAlignment.Top
Dim myTextBlock As New TextBlock
myTextBlock.TextWrapping = TextWrapping.Wrap
myTextBlock.Margin = New Thickness(0, 0, 0, 20)
myTextBlock.Text = "Scrolling is enabled when it is necessary. Resize the Window, making it larger and smaller."
Dim myRectangle As New Rectangle
myRectangle.Fill = Brushes.Red
myRectangle.Width = 500
myRectangle.Height = 500
'Add child elements to the parent StackPanel.
myStackPanel.Children.Add(myTextBlock)
myStackPanel.Children.Add(myRectangle)
'Add the StackPanel as the lone child of the ScrollViewer
myScrollViewer.Content = myStackPanel
'Add the ScrollViewer as the Content of the parent Window object
Me.Content = myScrollViewer
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowTitle="ScrollViewer Sample">
<ScrollViewer HorizontalScrollBarVisibility="Auto">
<StackPanel VerticalAlignment="Top" HorizontalAlignment="Left">
<TextBlock TextWrapping="Wrap" Margin="0,0,0,20">Scrolling is enabled when it is necessary.
Resize the window, making it larger and smaller.</TextBlock>
<Rectangle Fill="Red" Width="500" Height="500"></Rectangle>
</StackPanel>
</ScrollViewer>
</Page>
Stiller ve şablonlar
Bu bölümde ScrollBar denetim için stiller ve şablonlar açıklanmaktadır. Denetime benzersiz bir görünüm vermek için varsayılanı ControlTemplate değiştirebilirsiniz. Daha fazla bilgi için bkz. Stiller ve şablonlar nedir? ve Denetim için şablon oluşturma.
İçerik özelliği
Bu denetim bir içerik özelliği tanımlamaz.
Parçalar
Aşağıdaki tabloda, ScrollBar denetiminin adlandırılmış bölümleri listelenir.
| Bölüm | Türü | Description |
|---|---|---|
| PART_Track | Track | ScrollBar öğesinin konumunu gösteren elemanın kapsayıcısı. |
Görsel durumlar
Aşağıdaki tabloda denetimin görsel durumları listelenmiştir ScrollBar .
| VisualState Adı | VisualStateGroup Adı | Description |
|---|---|---|
| Disabled | OrtakDurumlar | Denetim devre dışı bırakıldı. |
| Mouseover | OrtakDurumlar | Fare işaretçisi denetimin üzerine yerleştirilir. |
| Sıradan | OrtakDurumlar | Varsayılan durum. |
| Focused | FocusStates | Denetimin klavye odağı vardır. |
| Odaklanmamış | FocusStates | Kontrolün klavye odağı yoktur. |
| GeçersizOdaklı | DoğrulamaDurumları | Ekli Validation.HasError özelliği true ve kontrol odakta. |
| InvalidUnfocused | DoğrulamaDurumları | Ekli Validation.HasError özellik true'dir ve denetim odağına sahip değildir. |
| Geçerli | DoğrulamaDurumları | Denetim sınıfını Validation kullanır ve Validation.HasError ekli özelliği ise şeklindedir false. |
Ayrıca bakınız
.NET Desktop feedback