【发布时间】:2011-01-13 09:24:38
【问题描述】:
我正在使用 ListView 和 GridView。有GridViewColumnresize 事件吗?
【问题讨论】:
标签: c# wpf listview resize gridviewcolumn
我正在使用 ListView 和 GridView。有GridViewColumnresize 事件吗?
【问题讨论】:
标签: c# wpf listview resize gridviewcolumn
另一种方法:您可以将更改事件处理程序附加到 GridViewColumn Width 属性:
PropertyDescriptor pd = DependencyPropertyDescriptor.FromProperty(
GridViewColumn.WidthProperty, typeof(GridViewColumn));
GridView gv = (GridView)myListView.View;
foreach (GridViewColumn col in gv.Columns) {
pd.AddValueChanged(col, ColumnWidthChanged);
}
...
private void ColumnWidthChanged(object sender, EventArgs e) { ... }
(受here 的回答启发,关于 DataGrid 的类似问题。)
【讨论】:
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">
【讨论】:
虽然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>
【讨论】:
我将改为处理PropertyChanged 事件。 PropertyChanged 事件在 Visual Studio 智能感知中看不到,但你可以欺骗它:)
GridViewColumn column = ...
((System.ComponentModel.INotifyPropertyChanged)column).PropertyChanged += (sender, e) =>
{
if (e.PropertyName == "ActualWidth")
{
//do something here...
}
};
【讨论】:
看看 MSDN DridViewColumn details。 不会出现这样的事件,可能需要一些解决方法,但我不确定。有look here
希望对你有帮助。
【讨论】: