低速のデータ ソースがあるため、非同期で作成します。また、ビューモデルの多くのプロパティ自体が遅いです。したがって、それらも非同期にします (Telerik プロパティ グリッドにバインドします)。
<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 がハングするという事実によって証明されています。
Q:ここで何が欠けていますか? IsAsync
非同期プロパティでは十分ではありませんか?
編集:これは通常のTextBlock
. 動作はIsAsync
コントロールの実装に依存していますか? (この場合、プロパティ グリッドのバグが疑われます。)