Я использую ICollectionView
для привязки источника wpfdatagrid
.ICollectionView
к наблюдаемой коллекции. я обновляю наблюдаемую коллекцию 5 секунд один раз. но коллекция модифицируется, но не обновляется до DataGrid
.
public ICollectionView CollectionView { get; set; }
public ObservableCollection<AgentListEntryViewModel> AgentsViewModel
{
get { return _agentsViewModel; }
set { _agentsViewModel = value; }
}
я установил значение для представления коллекции ниже.
this.CollectionView = new ListCollectionView(this.AgentsViewModel);
this.CollectionView.Filter = this.SearchAgents;
в xaml
я привязываю наблюдаемую коллекцию к сетке данных.
Я реализовал INotifyPropertyChanged
в типе ObservableCollection, т.е. в AgentListEntryViewModel
private void LoadAgentComponents(List<AgentStateInfo> agentStateInfos = null)
{
foreach (AgentStateInfo agentStateInfo in agentStateInfos)
{
AgentListEntryViewModel agentEntry = this.AgentsViewModel.SingleOrDefault(agent => agent.AgentStateInfo.AgentId == agentStateInfo.AgentId);
if (agentEntry != null)
{
agentEntry.UpdateAgentEntry(agentStateInfo);
}
}
this.OnPropertyChanged("AgentsViewModel");
}
вышеупомянутый метод, который я использую для обновления наблюдаемой коллекции.
<DataGrid VerticalAlignment="Stretch" Grid.Row="2" Grid.ColumnSpan="3" Background="{StaticResource ControlLightColor}" BorderBrush="LightGray" BorderThickness="2" HorizontalAlignment="Stretch"
IsReadOnly="True"
GridLinesVisibility="Vertical"
VerticalGridLinesBrush="LightGray"
CanUserAddRows="False"
CanUserResizeRows="False"
SelectionMode="Single"
AutoGenerateColumns="False"
HeadersVisibility="Column"
SnapsToDevicePixels="True"
VerticalContentAlignment="Center"
ItemsSource="{Binding AgentsViewModel}"
SelectedItem="{Binding SelectedAgentComponent}">
</DataGrid>
приведенный выше xaml я использовал для привязки к DataGrid.
но сетка данных не обновляется. Может кто-нибудь помочь мне .