私はGalasoft.MvvmLight.ViewModelBaseを拡張しているViewModelを持っています。MVVMLIghtで観測可能なコレクションがUIを更新しません
public ObservableCollection<Association> Delegation { get; set; }
private async void LoadDelegations()
{
Delegation.Clear();
var delegations = await NetworkManager.GetDelegations();
if(delegations== null)
{
return;
}
for (int i = 0;i< delegations.Count;i++)
{
Delegation.Add(delegations[i]);
}
}
private async void RemoveDelegation(string delegationId)
{
var response = await NetworkManager.RemoveDelegation(delegationId);
if (response.Result)
{
int i;
for (i = 0; i < Delegation.Count; i++)
{
if (Delegation[i].Id == delegationId) break;
}
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() =>
{
Delegation.RemoveAt(i);
});
}
}
このプロパティは、リストビューにバインドされています:それで私は、これは持っている
<ListView ItemTemplate="{StaticResource AssociationTemplate}"
ItemsSource="{Binding Delegation}"/>
私の問題はLoadDelegationではなくRemoveDelegationは、UIを更新したことがない、唯一時々UIを更新することです。
私は間違っていますか?
私はあなたがコレクションを作成しているところはわかりません。バインディングが実行された後に作成している可能性があるため、UIに通知するためにPropertyChangedイベントを発行する必要があります。 (私はGalasoft.MvvmLightに慣れていません) –
Dispatcher.RunAsyncを '非同期void'メソッドでなぜ必要としますか?何か右の臭いはありません。 –
ViewModelコンストラクタでCollectionを作成します。 Dispatcher.RunAsyncはその命令をUIスレッドで実行できますか? –