代码之家  ›  专栏  ›  技术社区  ›  Marat Faskhiev

wpf:GridViewColumn调整大小事件

  •  9
  • Marat Faskhiev  · 技术社区  · 16 年前

    我在用 ListView 具有 GridView . 有 GridViewColumn 调整大小事件?

    4 回复  |  直到 8 年前
        1
  •  3
  •   Dave Clemmer manu    15 年前

    看一看 MSDN DridViewColumn details . 有这样一个事件并不可怕,也许需要一些变通办法,但我不确定。有 look here

    希望有帮助。

        2
  •  28
  •   Dave Clemmer manu    15 年前

    我来处理 PropertyChanged 事件代替。这个 属性更改 在Visual Studio IntelliSense中未看到事件,但您可以对其进行欺骗:)

     GridViewColumn column = ...
     ((System.ComponentModel.INotifyPropertyChanged)column).PropertyChanged += (sender, e) =>
     {
         if (e.PropertyName == "ActualWidth")
         {
             //do something here...
         }
     };
    
        3
  •  4
  •   Dave Clemmer manu    15 年前

    虽然 GridViewColumn 似乎没有 Resize 事件,可以绑定到 ColumnWidth 属性。

    您可以使用下面的示例XAML来验证这一点—本示例不需要代码隐藏。它只在一个方向上绑定,从列宽到文本框,当您调整大小时,将看到文本框立即更新为列宽。

    (这只是一个简单的例子;如果您想在代码中调整大小,我将创建一个 Width 属性,因此绑定将在两个方向上工作)。

    <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>
    
        4
  •  1
  •   Bailey    8 年前
    private void ListView_Loaded( object sender, RoutedEventArgs e )
    {
         // Add the handler to know when resizing a column is done
         ((ListView)sender).AddHandler( Thumb.DragCompletedEvent, new   DragCompletedEventHandler( ListViewHeader_DragCompleted ), true );
    }
    
    private void ListViewHeader_DragCompleted( object sender, System.Windows.Controls.Primitives.DragCompletedEventArgs e )
    {
         ListView lv = sender as ListView;
        ... code handing the resize goes here ...
    }
    

    XAML:

    <ListView Loaded="ListView_Loaded">