0

(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

(ここで不要なコードを切り取るだけです...必要に応じて編集します)

4

0 に答える 0