Semantic Zoom не показывает результатов
После многих попыток запустить этот функционал я, наконец, совершенно заблудился. Отображаются только заголовки группы и только в ZoomInView. Где я не прав? Все мои данные загружаются из сервисов веб-API, но я думаю, что CollectionViewSource является наблюдаемым, и это не будет источником проблемы.
Это мои классы поко
public class StopInformation
{
public string Name { get; set; }
public string Number { get; set; }
}
public class ScheduleDirection
{
public string Direction { get; set; }
public IEnumerable<StopInformation> Stops { get; set; }
}
ViewModel Member
public ObservableCollection<ScheduleDirection> Directions { get; set; }
На моей странице ресурсы xaml
<CollectionViewSource x:Name="cvs" IsSourceGrouped="true"
Source="{Binding Directions}" />
И семантический код увеличения:
<SemanticZoom x:Name="semanticZoom">
<SemanticZoom.ZoomedOutView>
<GridView ItemsSource="{Binding Path=View.CollectionGroups, Source={StaticResource cvs}}" ScrollViewer.IsHorizontalScrollChainingEnabled="False">
<GridView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Direction}"/>
</DataTemplate>
</GridView.ItemTemplate>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
</SemanticZoom.ZoomedOutView>
<SemanticZoom.ZoomedInView>
<GridView ItemsSource="{Binding Source={StaticResource cvs}}" IsSwipeEnabled="True" ScrollViewer.IsHorizontalScrollChainingEnabled="False">
<GridView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</GridView.ItemTemplate>
<GridView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Text='{Binding Direction}' />
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.ContainerStyle>
<Style TargetType="GroupItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GroupItem">
<StackPanel Orientation="Vertical">
<ContentPresenter Content="{TemplateBinding Content}" />
<ItemsControl x:Name="ItemsControl" ItemsSource="{Binding Stops}" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</GridView.GroupStyle>
<Button Visibility="Collapsed"/>
</GridView>
</SemanticZoom.ZoomedInView>
</SemanticZoom>
Примите любые идеи.
1 ответ
Я сам столкнулся с этой проблемой и нашел решение после некоторого поиска. Возможно, для ОП уже слишком поздно, но я все равно опубликую его ради других, кто может столкнуться с той же проблемой.
Использовать ItemsPath
собственность на CollectionViewSource
, Подробнее об этом читайте на MSDN.
<CollectionViewSource
x:Name="cvs"
IsSourceGrouped="true"
Source="{Binding Directions}"
ItemsPath="Stops" /> <!-- Add this last bit -->