我已將Observable Collection綁定到MVVM-light VM中的infragistics的xamDataGrid。在UI中,我有我的網格和一個按鈕,當我點擊按鈕時,我想執行更新信息的操作。此操作需要很長時間,我希望數據按照GUI上顯示的順序進行更新。然而,Observable集合沒有排序,而是始終在未排序列表上更新。有沒有辦法在我的VM中獲得排序列表?在MVVM光源中獲取已排序的可觀察集合
VM:
public class SystemInformation : ViewModelBase
{
private ObservableCollection<Site> _activeSites;
private RelayCommand _updateAllCommand;
/// <summary>
/// Initializes a new instance of the SystemInformation class.
/// </summary>
public SystemInformation() : base()
{
ActiveSites = new ObservableCollection<Site>();
}
public ObservableCollection<Site> ActiveSites
{
get
{
return _activeSites;
}
set
{
Set("ActiveSites", ref _activeSites, value);
}
}
public RelayCommand UpdateAllCommand
{
get
{
return _updateAllCommand
?? (_updateAllCommand= new RelayCommand(
() =>
{
try
{
foreach (var site in ActiveSites)
{
// Update data
}
}
catch (Exception ex)
{
//Exception handling
}
});
}
));
}
}
}
}
查看:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="5"/>
<RowDefinition Height="*"/>
<RowDefinition Height="5"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="5"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="5"/>
</Grid.ColumnDefinitions>
<igDP:XamDataGrid x:Name="grdSysinfo" Grid.Row="1" Grid.Column="3" DataSource="{Binding ActiveSites, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged }" />
<Button Command="{Binding UpdateAllCommand}" CommandParameter="All" Grid.Row="3" Grid.Column="1">Load All</Button>
</Grid>
嘗試尋找這裏 - HTTP: //stackoverflow.com/questions/16956251/sort-a-wpf-datagrid-programmatically –
這是相反的方式。他們想要在他們的vm中調整他們的GUI。我希望我的虛擬機中的集合根據我的GUI中發生的更改進行更新。除非我完全錯過了這裏的東西。 –