Ho una sorgente dati lenta, quindi la creo in modo asincrono. Inoltre, molte proprietà del mio viewmodel sono esse stesse lente. Quindi, li faccio asincrono troppo (legame ad una griglia delle proprietà Telerik):"IsAsync" non ha effetto per la proprietà slow?
<Grid>
<Grid.DataContext>
<ObjectDataProvider ObjectType="{x:Type viewModels:MyViewModel}"
IsAsynchronous="True" x:Name="myViewModel" />
</Grid.DataContext>
<telerik:RadPropertyGrid x:Name="settings" Item="{Binding IsAsync=True}">
<telerik:RadPropertyGrid.PropertyDefinitions>
<telerik:PropertyDefinition
Binding="{Binding Path=SlowProperty,IsAsync=True,Mode=TwoWay}" />
</telerik:RadPropertyGrid.PropertyDefinitions>
</telerik:RadPropertyGrid>
</Grid>
Quando il debugging, posso vedere che l'origine dati è infatti creato in un altro thread, quindi non bloccare l'interfaccia utente. Tuttavia, quando arrivo a SlowProperty
, il debugger rivela che sono ancora nel thread principale, il che è dimostrato dal fatto che l'interfaccia utente si blocca fino a quando la proprietà non ritorna.
Q: Cosa mi manca qui? IsAsync
non è sufficiente per le proprietà asincrone?
Modifica: Sembra che questo funzioni per un normale TextBlock
. Il comportamento dello IsAsync
dipende dall'implementazione di un controllo? (In questo caso sospetto un bug nella griglia di proprietà.)
Stai dicendo che 'PriorityBinding' è fondamentale per l'associazione asincrona? – l33t