Cách thêm ScrollBar vào Stackpanel


106

Trong ứng dụng WPF của tôi, tôi có một Bảng điều khiển có chứa một số điều khiển bên trong chúng. Làm cách nào để thêm một Scrollbar vào ngăn xếp này.

Câu trả lời:


162

Đặt nó vào a ScrollViewer.


Cảm ơn. Sau khi đặt ScrollViewer xung quanh nó, toàn bộ nội dung sẽ không hiển thị. Tôi đã thử đặt Chiều cao và Chiều rộng thành Tự động, nhưng không may. Tại sao chỉ nên hiển thị một phần giới hạn?
Shamim Hafiz

5
Tôi không có đầu mối. Câu hỏi của bạn dài hai câu, hơi ít chi tiết để lường trước mọi vấn đề tiềm ẩn.
Joey

OK, tôi đã đặt thẻ mở không đúng chỗ. Cảm ơn rất nhiều vì sự giúp đỡ.
Shamim Hafiz

Câu trả lời đơn giản và hoàn hảo.
David Piao

94

Stackpanel không có cơ chế cuộn tích hợp nhưng bạn luôn có thể bọc StackPanel trong ScrollViewer

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

3
Chà, StackPanelthực hiện IScrollInfovà cung cấp một số phương pháp liên quan đến cuộn. Bạn có chắc là nó không có bất kỳ loại cơ chế cuộn "tích hợp" nào không?
HOẶC Mapper

4
from msdn.microsoft.com/en-us/library/… ... "Thuộc tính này không nhằm mục đích sử dụng trong mã của bạn. Nó được hiển thị công khai để thực hiện hợp đồng giao diện (IScrollInfo). Việc đặt thuộc tính này không có hiệu lực. Nếu bạn yêu cầu cuộn vật lý thay vì cuộn logic, hãy bọc StackPanel trong ScrollViewer và đặt thuộc tính CanContentScroll của nó thành false. "
Skinner

11

Nó hoạt động như thế này:

<ScrollViewer VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Disabled" Width="340" HorizontalAlignment="Left" Margin="12,0,0,0">
        <StackPanel Name="stackPanel1" Width="311">

        </StackPanel>
</ScrollViewer>

TextBox tb = new TextBox();
tb.TextChanged += new TextChangedEventHandler(TextBox_TextChanged);
stackPanel1.Children.Add(tb);

0

Đối với StackPanel được định hướng theo chiều ngang, việc đặt cả hai khả năng hiển thị của thanh cuộn một cách rõ ràng có tác dụng đối với tôi để có được thanh cuộn ngang.

    <ScrollViewer VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Auto" >
        <StackPanel Orientation="Horizontal" />
    </ScrollViewer>

1
Lặp lại các câu trả lời trước đó.
vapcguy

-4

Nếu ý bạn là, bạn muốn cuộn qua nhiều mục trong ngăn xếp của mình, hãy thử đặt một lưới xung quanh nó. Theo định nghĩa, một bảng điều khiển có chiều dài vô hạn.

Vì vậy, hãy thử một cái gì đó như sau:

   <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <StackPanel Width="311">
              <TextBlock Text="{Binding A}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" FontStretch="Condensed" FontSize="28" />
              <TextBlock Text="{Binding B}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
        </StackPanel>
    </Grid>

Bạn thậm chí có thể làm cho điều này hoạt động với ScrollViewer


4
Mã này được đưa ra khỏi ngữ cảnh. Bạn có thể xóa các phần phụ thuộc để mã có thể sử dụng được mà không cần sửa đổi thêm không?
Markus Jarderot
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.