2011-07-13 22 views
13

Tôi có một mạng lưới với 3 cột và 2 hàngtrong WPF làm thế nào để làm cho một DataGrid phù hợp với chiều cao cửa sổ

 <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="10"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 

tôi các tế bào dưới bên trái, tôi có một mạng lưới dữ liệu, với AutoGenerateColumns = True mà có thể tải nhiều hàng. Những gì tôi muốn làm là cho chiều cao lưới dữ liệu để tối đa hóa để phù hợp với cửa sổ, và cho người dùng có thể sử dụng thanh cuộn dữ liệu để cuộn các hàng lên và xuống.

gì xảy ra là dòng DataGrid của dưới cùng của cửa sổ, và thậm chí nếu tôi đặt

ScrollViewer.VerticalScrollBarVisibility="Visible" 

của DataGrid, thanh cuộn không có tác dụng và các hàng chảy xuống dưới. Bằng cách nào đó dữ liệu không cảm thấy bị giới hạn ...

Việc cần làm?

+1

Cho một số chiều rộng vào lưới dữ liệu có thể giải quyết vấn đề của bạn ... nếu bạn không muốn chiều rộng mã cứng, bạn có thể làm một số yếu tố ràng buộc để đạt được điều này. .. – Bathineni

+0

Tôi lo lắng về chiều cao ... – GilShalit

+0

xin lỗi .. Tôi đang nói về chiều cao chỉ .. một lỗi chính tả ... Đưa ra một số Chiều cao cho lưới dữ liệu có thể giải quyết vấn đề của bạn ... nếu bạn không muốn chiều cao mã cứng bạn có thể làm một số loại o f yếu tố ràng buộc để đạt được điều này .. – Bathineni

Trả lời

31

Hãy thử thiết lập của DataGrid của bạn HorizontalAlignment=StretchVerticalScrollBarVisibility=Auto

Nếu điều đó không làm việc, bạn cũng có thể cần phải ràng buộc Chiều cao của lưới để Window Chiều cao để nó không tự động phát triển để phù hợp với nội dung của nó. Thông thường tôi sử dụng Height="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=ActualHeight}" (Nó có thể là RenderSize.ActualHeight thay vì chỉ ActualHeight ... Tôi quên.

Một lựa chọn khác là sử dụng một DockPanel thay vì một Grid từ điều khiển mà không tự động phát triển để phù hợp với nội dung của nó. Thay vào đó,

+0

ý tưởng thú vị. Tôi sẽ cung cấp cho họ một thử và báo cáo lại :-) – GilShalit

+0

Các kỹ thuật ràng buộc làm việc như một say mê, Cảm ơn! Và đó là ActualPath như bạn đã viết. BTW, làm thế nào để tôi ràng buộc một cái gì đó để một phần nhỏ của một giá trị Path? Đường dẫn = ActualPath/2 dường như không hoạt động. – GilShalit

+1

@Gilshalit Bạn sẽ cần phải sử dụng một Trình chuyển đổi cho rằng – Rachel

1

Bạn phải xác định cột và hàng nơi DataGrid là với *. Bạn nói nó nằm ở ô phía dưới bên trái. Hàng là ok nhưng cột của bạn có Width="Auto".

AutoGenerateColumns=True gây rối nếu Width="Auto".

+0

Lưu ý rằng điều này sẽ gây ra thanh cuộn ngang không hiển thị ngay cả khi bạn đặt 'ScrollViewer.HorizontalScrollBarVisibility =" Auto "' – mauris

Các vấn đề liên quan