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.
ScrollViewer denetimi, içeriğin yatay veya dikey olarak kaydırılabildiği kaydırılabilir bir bölge oluşturur. Kullanıcı arabirimindeki içerik genellikle bir bilgisayar ekranının görüntüleme alanından daha büyüktür ve ScrollViewer, Windows Presentation Foundation (WPF) uygulamalarında içerik kaydırmayı etkinleştirmek için kullanışlı bir yol sağlar.
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. İçindeki ScrollViewer işlevselliği kapsülleyen bir bileşik denetim olan ScrollBar öğesini tek başına kullanabilirsiniz.
Denetim ScrollViewer hem fare hem de klavye komutlarına yanıt verir ve önceden belirlenmiş artışlarla içeriği kaydırmak için çok sayıda yöntem tanımlar. Bir ScrollChanged durumundaki değişikliği algılamak için ScrollViewer olayını kullanabilirsiniz.
Bir ScrollViewer yalnızca bir alt öğeye sahip olabilir, genellikle bir Panel koleksiyonunu barındırabilen bir Children öğesidir. özelliği, Content öğesinin tek alt öğesini ScrollViewertanımlar.
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
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. Varsayılan olarak, ScrollViewer denetim fiziksel birimlere göre kaydırmayı destekler.
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.
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
Example
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>
Nasıl yapılır konu başlıkları
| Başlık | Description |
|---|---|
| ScrollChanged Olayını İşleme | ScrollViewer denetiminde ScrollChanged olayını işlemeyi öğrenin. |
| IScrollInfo Arabirimini Kullanarak İçeriği Kaydırma | IScrollInfo arabirimini kullanarak içeriği kaydırmayı öğrenin. |
| ScrollViewer'ın İçerik Kaydırma Yöntemlerini Kullanma | ScrollViewer'ın içerik kaydırma yöntemlerini kullanmayı öğrenin. |
Stiller ve şablonlar
Bu bölümde ScrollViewer 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
özelliği, Content öğesinin tek alt öğesini ScrollViewertanımlar.
Parçalar
Aşağıdaki tabloda, ScrollViewer denetiminin adlandırılmış bölümleri listelenir.
| Bölüm | Türü | Description |
|---|---|---|
| PART_HorizontalScrollBar | ScrollBar | ScrollBar İçeriği yatay olarak kaydırmak için kullanılır. |
| PART_ScrollContentPresenter | ScrollContentPresenter | içeriğin ScrollViewer içindeki yer tutucusu. |
| PART_VerticalScrollBar | ScrollBar | ScrollBar İçeriği dikey olarak kaydırmak için kullanılır. |
Görsel durumlar
Aşağıdaki tabloda denetimin görsel durumları listelenmiştir ScrollViewer .
| VisualState Adı | VisualStateGroup Adı | Description |
|---|---|---|
| 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. |
Belgeleri sayfalandırma
Belge içeriği için kaydırmanın alternatifi, sayfalandırmayı destekleyen bir belge kapsayıcısı seçmektir. FlowDocument, FlowDocumentPageViewer gibi bir görüntüleme denetiminde barındırılmak üzere tasarlanmış, birden çok sayfada içerik sayfalandırmasını destekleyen ve kaydırmaya olan ihtiyacı engelleyen belgeler içindir. DocumentViewer, ekran alanı dışında kalan içeriği görüntülemek için geleneksel kaydırmayı kullanan FixedDocument içeriği görüntülemek için bir çözüm sağlar.
Belge biçimleri ve sunu seçenekleri hakkında ek bilgi için bkz. WPF'deki Belgeler.
Ayrıca bakınız
.NET Desktop feedback