(Windows 8) GridView を、ページへのナビゲーション時に読み込まれるグループ化されたオブジェクトにバインドしようとしています。基本的に私が望むのは、他のオブジェクトがまだロードされている間にこれらのロードされたオブジェクトを表示することです。
次のコードは、すべてのアイテムがロードされた後、グリッドにアイテムのみが表示されることを示しています。
Dim myItems As New ObservableCollection(Of SearchResultItem)
Dim group As New SearchResultGroup With {.Title = "Title"}
group.Items = myItems
' Loading code here
DefaultViewModel("Groups") = New ObservableCollection(Of SearchResultGroup)({group})
ただし、次の場合は何も表示されません。
Dim myItems As New ObservableCollection(Of SearchResultItem)
Dim group As New SearchResultGroup With {.Title = "Title"}
group.Items = myItems
DefaultViewModel("Groups") = New ObservableCollection(Of SearchResultGroup)({group})
' Loading code here
(これは async LoadState 関数の下にあります)
ページのコードは次のとおりです。
<common:LayoutAwarePage DataContext={Binding DefaultViewModel, RelativeSource={RelativeSource Self}} ... >
<Page.Resources>
<CollectionViewSource
x:Name="groupedItemsViewSource"
Source="{Binding Groups}"
IsSourceGrouped="true"
ItemsPath="Items"/>
...
</Page.Resources>
<Grid Style="{StaticResource LayoutRootStyle}">
....
<GridView
x:Name="itemGridView"
AutomationProperties.AutomationId="ItemGridView"
AutomationProperties.Name="Grouped Items"
Grid.RowSpan="2"
Padding="116,137,40,46"
ItemsSource="{Binding Source={StaticResource groupedItemsViewSource},Mode=TwoWay}"
ItemTemplate="{StaticResource ResultTemplate}"
SelectionMode="None"
IsSwipeEnabled="false"
IsItemClickEnabled="True">
...
私が使用したカスタムアイテムとグループクラスは次のとおりです。
Public Class SearchResultGroup
Inherits BindableBase
Public Sub New() ...
Private _Title As String
Property Title As String ...
Private _Items As ObservableCollection(Of SearchResultItem)
Property Items As ObservableCollection(Of SearchResultItem) ...
End Class
Public Class SearchResultItem
Inherits BindableBase
Private _Title As String
Property Title As String ...
Private _Title2 As String
Property Title2 As String ...
Private _Subtitle As String
Property Subtitle As String
End Class
(ここで不要なコードを切り取るだけです...必要に応じて編集します)