我有一个绑定到可观察集合的数据网格。我想知道从数据网格中删除一行(或多行)的时间。我试图用mvvm来做这件事。
我并不担心属性改变(只读它只是删除)。所以我知道我只需要使用CollectionChanged事件。但是不确定我如何连接它,特别是使用mvvm。
的Datagrid
<DataGrid Grid.Row="0"
ItemsSource="{Binding BookList, UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource DataGridTemplate1}"
ColumnHeaderStyle="{StaticResource DG_ColumnHeaderCenter1}"
RowStyle="{StaticResource DG_Row1}"
CellStyle="{StaticResource DG_Cell1}"
RowHeaderStyle="{StaticResource DG_RowHeader1}"
AutoGenerateColumns="False"
HorizontalAlignment="Stretch"
CanUserDeleteRows="True"
Background="Silver"
RowHeaderWidth="30">
<DataGrid.Columns>
<DataGridTextColumn Header="DatePrice" IsReadOnly="True" Binding="{Binding DatePrice, StringFormat={}\{0:dd-MMM-yy\}}" MinWidth="75"/>
<DataGridTextColumn Header="ISIN" IsReadOnly="True" Binding="{Binding ISIN}" MinWidth="75"/>
<DataGridTextColumn Header="Name" IsReadOnly="True" Binding="{Binding Name}" MinWidth="75"/>
<DataGridTextColumn Header="Price" IsReadOnly="True" Binding="{Binding Price, StringFormat={}{0:N0}}" MinWidth="75"/>
</DataGrid.Columns>
</DataGrid>
答案 0 :(得分:3)
你可以写这样的东西。添加,删除,更改,移动项目或刷新整个列表时会发生此事件。
BookList.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler( BookList_CollectionChanged );
void BookList_CollectionChanged( object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e )
{
if ( e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove )
{
}
}
答案 1 :(得分:0)
实施INotifyPropertyChanged
使用此
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string property)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
然后在你的Collection(DataGrid的ItemsSource)Setter中添加
OnPropertyChanged("CollectionName");