MVVMライトVMのinfragisticsのxamDataGridにObservable Collectionをバインドしました。 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を調整したい。私は私のVMのコレクションが私のGUIで起こった変更に応じて更新されるようにしたい。私がここで何かを完全に欠けていない限り。 –