2010-02-25 10 views
6

Đây phải là một nhiệm vụ rất đơn giản, nhưng vì một lý do nào đó, tôi đang gặp rất nhiều vấn đề với WPF.Thanh cuộn WPF cho cửa sổ có thể thay đổi kích thước

Đây là những gì tôi muốn xảy ra: Tôi có một loạt các điều khiển trong cửa sổ, bao gồm các điều khiển giãn nở. Tôi muốn có các thanh cuộn cho cửa sổ đó, khi nội dung mở rộng bên dưới vùng hiển thị. Ngoài ra, cửa sổ không có chiều rộng cố định, nó có thể được phóng to, thay đổi kích cỡ, vv

Tôi đã thử đặt một ScrollViewer làm phần tử đầu tiên trong cửa sổ, nhưng nó không hoạt động chính xác. Nếu tôi đặt chiều cao và chiều rộng thành Tự động, nó sẽ không cuộn và nếu tôi đặt nó thành lưu giữ không chính xác, nó sẽ tạo ra một hộp khi cửa sổ được phóng to.

Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều!

+1

Bạn có thể giải thích, "nó tạo ra một hộp" có nghĩa là gì? Tôi không hiểu lắm. – Vlad

+0

Có nghĩa là có một khu vực rộng cố định ở giữa khi cửa sổ xung quanh nó mở rộng –

+0

Trong trường hợp này, bạn vui lòng đăng XAML của bạn? Thú vị là bản thân cửa sổ và phần tử con ngay lập tức của nó (ScrollViewer?). – Vlad

Trả lời

10

Tôi giả sử rằng bạn có một số vấn đề về chiều rộng cố định. Nếu bạn cung cấp một mẫu XAML của bạn, tôi có thể xem liệu tôi có thể trợ giúp thêm không. Các công trình sau đây mà không hiển thị một hộp:

<Window x:Class="WpfSample1.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="300" Width="300"> 
    <ScrollViewer> 
     <StackPanel> 
      <Rectangle Height="400" Width="400" Fill="Red" Margin="10" /> 
      <Rectangle Height="400" Width="400" Fill="Green" Margin="10" /> 
      <Rectangle Height="400" Width="400" Fill="Blue" Margin="10" /> 
      <Rectangle Height="400" Width="400" Fill="Yellow" Margin="10" /> 
     </StackPanel> 
    </ScrollViewer> 
</Window> 
+0

Hóa ra đó là vấn đề chiều rộng cố định với cotnrols, cảm ơn! –

8

Bạn nên thiết lập HorizontalScrollBarVisibility và VerticalScrollBarVisibility của ScrollViewer để Auto.

Dưới đây là một ví dụ:

<Grid> 
    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> 
     <Canvas Width="400" Height="400"> 
      <Button Canvas.Left="300">Left 300</Button> 
      <Button Canvas.Top="300">Top 300</Button> 
     </Canvas> 
    </ScrollViewer> 
</Grid> 

này thay thế nội dung của cửa sổ chính được tạo ra bởi VS.

Chạy và thay đổi kích thước cửa sổ, phóng to cửa sổ và bạn sẽ cuộn các thanh xuất hiện và biến mất.