2010-02-05 28 views

Trả lời

2

Hãy xem MSDN DridViewColumn details. Nó không appaer để có một sự kiện như vậy, có lẽ một số workaround yêu cầu, tôi không chắc chắn mặc dù. có look here

Hy vọng điều đó sẽ hữu ích.

+0

______Thanks :) –

4

Mặc dù GridViewColumn dường như không có sự kiện Resize, bạn có thể liên kết với thuộc tính ColumnWidth.

Bạn có thể xác minh điều này bằng mẫu XAML bên dưới - không cần mã nào cần thiết cho ví dụ này. Nó chỉ liên kết theo một hướng, từ chiều rộng cột đến hộp văn bản và khi bạn đổi kích thước, bạn sẽ thấy hộp văn bản ngay lập tức cập nhật với chiều rộng cột.

(Đây chỉ là một ví dụ đơn giản; nếu bạn muốn lấy lại kích thước trong mã, tôi sẽ tạo một lớp với thuộc tính Width để ràng buộc sẽ hoạt động theo cả hai hướng).

<StackPanel> 
    <ListView> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Width="{Binding ElementName=tbWidth1, Path=Text, Mode=OneWayToSource}" /> 
       <GridViewColumn Width="{Binding ElementName=tbWidth2, Path=Text, Mode=OneWayToSource}" /> 
      </GridView> 
     </ListView.View> 
     <ListViewItem>Item 1</ListViewItem> 
     <ListViewItem>Item 2</ListViewItem> 
    </ListView> 
    <TextBox Name="tbWidth1" /> 
    <TextBox Name="tbWidth2" /> 
</StackPanel> 
25

Tôi sẽ xử lý sự kiện PropertyChanged thay thế. Sự kiện này được PropertyChanged chưa từng thấy trong Visual Studio IntelliSense, nhưng bạn có thể đánh lừa nó :)

GridViewColumn column = ... 
((System.ComponentModel.INotifyPropertyChanged)column).PropertyChanged += (sender, e) => 
{ 
    if (e.PropertyName == "ActualWidth") 
    { 
     //do something here... 
    } 
}; 
+0

Rất đẹp (+1). Xem điều này cho một hàm ý của kỹ thuật này trong thuộc tính đính kèm: http://wpftoolbelt.codeplex.com/SourceControl/changeset/view/33225#457436. –

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