で使用ListView
していGridView
ます。GridViewColumn
サイズ変更イベントはありますか?
12140 次
5 に答える
30
PropertyChanged
代わりにイベントを処理します。PropertyChanged
イベントはVisualStudioインテリセンスには表示されませんが、だましてはかまいません:)
GridViewColumn column = ...
((System.ComponentModel.INotifyPropertyChanged)column).PropertyChanged += (sender, e) =>
{
if (e.PropertyName == "ActualWidth")
{
//do something here...
}
};
于 2010-02-16T01:55:03.320 に答える
4
イベントが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>
于 2010-02-05T12:33:38.600 に答える
1
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">
于 2018-04-16T15:52:33.697 に答える
0
Width
別のアプローチ:変更イベントハンドラーをGridViewColumnプロパティにアタッチできます。
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) { ... }
( DataGridに関する同様の質問については、ここでの回答に触発されています。)
于 2019-06-20T21:38:26.997 に答える