2012-04-25 20 views
31

Tôi đang sử dụng ListView kiểm soát thay vì DataGrid trong ứng dụng WPF của mình. Tôi muốn cung cấp cho * chiều rộng cho ListView.GridViewColumn của mình, nhưng bất cứ khi nào tôi cung cấp * chiều rộng đến ListView.GridViewColumn, nó mang lại cho tôi một lỗi thời gian biên dịch. Vui lòng đề xuất cho tôi cách tôi có thể cung cấp chiều rộng * cho ListView.GridViewColumn, để ListView.GridViewColumn có thể tự động lấp đầy khoảng trống thừa khi tôi phóng to màn hình.ListView.GridViewColumn (*) width

Bất kỳ trợ giúp nào về điều này sẽ được đánh giá cao. Cảm ơn

Trả lời

57

Vui lòng thử rằng giải pháp:

<ListView> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="column1" x:Name="col1"/> 
      <!--Column that shall resize: Width is set to the Actual Width of the helper field defined below--> 
      <GridViewColumn Header="column2" 
          Width="{Binding ElementName=helperField, Path=ActualWidth}"/> 
     </GridView> 
    </ListView.View> 
    Test Text 
</ListView> 

<!--This is the hidden helper Grid which does the resizing --> 
<Grid Visibility="Hidden"> 
    <Grid.ColumnDefinitions> 
     <!--Width is bound to width of the first GridViewColumn --> 
     <ColumnDefinition Width="{Binding ElementName=col1, Path=ActualWidth}"/> 
     <!--Width is set to "Fill"--> 
     <ColumnDefinition Width="*"/> 
     <!--Correction Width--> 
     <ColumnDefinition Width="10"/> 
    </Grid.ColumnDefinitions> 
    <!--This is the hidden helper Field which is used to bind to, using the "Fill" column of the helper grid--> 
    <Grid Grid.Column="1" x:Name="helperField"/> 
</Grid> 

Bạn cũng có thể tìm thấy một số giải pháp khác tại liên kết sau:

http://social.msdn.microsoft.com/forums/en-US/wpf/thread/3ee5696c-4f26-4e30-8891-0e2f95d69623/

+0

Cảm ơn Bilal Hashmi. Nhưng trong phương pháp tiếp cận xaml ở trên, nơi tôi nên đặt dòng mã trong trang xaml của tôi, để nó sẽ có hiệu lực cột ListView. Và bằng cách sử dụng IValueConverter nó hoạt động tốt lần đầu tiên khi tải màn hình nhưng khi tôi tối đa hóa màn hình hoặc thay đổi kích thước màn hình nó không thay đổi kích thước chiều rộng cột cho phù hợp. – Yogesh

+0

có lẽ điều này có thể giúp http://stackoverflow.com/questions/560581/how-to-autosize-and-right-align-gridviewcolumn-data-in-wpf – Klaus78

+0

Bạn có thể đặt nó ở bất kỳ đâu trên trang xaml đó nơi bạn đang hiển thị ListView của bạn. Cho phép nói tại Row = 0 và Column = 0 của lưới chính của trang. –

3

tôi đã đăng cách tiếp cận của tôi để ở đây này mà là một chút khác nhau (nhưng tìm thấy nó rất đáng tin cậy và cho phép các cột có chiều rộng phần trăm https://stackoverflow.com/a/10526024/41211) như tôi đã thử ở trên và đã tìm kiếm xử lý devenv.exe của tôi tối đa vì nó liên tục cố gắng đánh giá lại thiết kế của tôi với bove ràng buộc năng động.

-2

Với group columns view definition, các Kettic GridView cho phép người sử dụng để tạo các nhóm cột xem và chế độ xem HTML cho các dữ liệu trong lưới

+0

Vui lòng gửi mẫu mã để minh họa cho các từ của bạn. – AlexB