5
我有一个缓慢的数据源,所以我创建它异步。而且,我的viewmodel的很多属性本身都很慢。因此,我让他们太异步(绑定到一个Telerik的属性网格):“IsAsync”对缓慢的属性没有影响?
<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>
调试时,我可以看到数据源是在另一个线程创建的确,因此不会阻塞UI。但是,当我进入SlowProperty
时,调试器显示我仍然处于主线程中 - 事实证明,UI一直挂起,直到属性返回。
问:我在这里错过了什么?对于异步属性,不是IsAsync
足够吗?
编辑:看来这适用于正常的TextBlock
。 IsAsync
行为是否依赖于控件的实现? (在这种情况下,我怀疑属性网格中存在一个错误。)
你是说'PriorityBinding'对异步绑定至关重要吗? – l33t