WPF: событие изменения размера GridViewColumn

Я использую ListView с GridView. Есть ли GridViewColumn событие resize?

4 ответов


посмотреть MSDN DridViewColumn детали. это не appaer, чтобы иметь такое событие, вероятно, требуется обходной путь, я не уверен, хотя. есть посмотреть здесь

надеюсь, что это помогает.


- Я займусь событие. The PropertyChanged событие не отображается в Visual Studio intellisense, но вы можете обмануть его:)

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

хотя GridViewColumn Не есть Resize событие, вы можете привязать к ColumnWidth собственность.

вы можете проверить это с помощью примера XAML ниже - нет кода, необходимого для этого примера. Он связывается только в одном направлении, от ширины столбца до текстового поля, и при изменении размера вы увидите, что текстовое поле немедленно обновляется с шириной столбца.

(Это просто простой пример; если вы хотите подобрать размер в коде, я бы создал класс с Width свойство so binding будет работать в обоих направлениях).

<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>

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">