我正在使用ICollectionView
綁定wpfdatagrid
。源是可觀察的集合。我更新可觀察的收集5秒一次。但收集已修改,但未更新至DataGrid
。ICollectionView在UI中未更新
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;
in xaml
,我將可觀察集合綁定到數據網格。
我已在類型的ObservableCollection即實現INotifyPropertyChanged
,在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>
上面我用來綁定到DataGrid的xaml。
但datagrid未更新。誰能幫我 。
您需要在setter中調用NotifyOfPropertyChanged。 –
通過添加更新集合或整個集合被更改? – Sankarann