Наконец я придумал работу вокруг. Я даю код, но до этого загружаю образец Gridview из ссылки msdn.
GridView Sample
И изменения, чтобы увидеть эффект должно быть сделано в ScenarioOutput1.xaml и ScenarioOutput1.xaml.cs.
Так что начните с ScenarioOutput1.xaml Codethat I changed Скопируйте его в проект (GridView Demo из msdn), чтобы увидеть эффект, если у вас возникли трудности с пониманием кода.
ScenarioOutput1.xaml
<Page
x:Class="ListViewSimple.ScenarioOutput1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400">
<Grid Height="300" VerticalAlignment="Top" Tapped="Grid_Tapped">
<ScrollViewer x:Name="scroller" HorizontalScrollMode="Enabled" Width="auto" HorizontalScrollBarVisibility="Visible">
<GridView x:Name="ItemGridView" Background="{StaticResource ApplicationPageBackgroundThemeBrush}"
ItemTemplate="{StaticResource StoreFrontTileTemplate}"
ItemContainerStyle="{StaticResource StoreFrontTileStyle}"
ItemsPanel="{StaticResource StoreFrontGridItemsPanelTemplate}"
BorderBrush="LightGray"
VerticalAlignment="Top"
ScrollViewer.HorizontalScrollBarVisibility="Hidden"
BorderThickness="1" ScrollViewer.VerticalScrollBarVisibility="Auto"
SelectionMode="None"/>
</ScrollViewer>
</Grid>
</Page>
Теперь следующая часть файла CS.
ScenarioOutput1.xaml.cs
using System;
using System.Linq;
using System.Collections.Generic;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Graphics.Display;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using SDKTemplateCS;
using Expression.Blend.SampleData.SampleDataSource;
namespace ListViewSimple
{
public sealed partial class ScenarioOutput1 : Page
{
// A pointer back to the main page which is used to gain access to the input and output frames and their content.
MainPage rootPage = null;
StoreData storeData = null;
private Item item;
private Expression.Blend.SampleData.SampleDataSource.ItemCollection _collectionNew = new Expression.Blend.SampleData.SampleDataSource.ItemCollection();
public ScenarioOutput1()
{
InitializeComponent();
storeData = new StoreData();
ItemGridView.ItemsSource = storeData.Collection;
}
#region Template-Related Code - Do not remove
protected override void OnNavigatedTo(NavigationEventArgs e)
{
// Get a pointer to our main page.
rootPage = e.Parameter as MainPage;
// We want to be notified with the OutputFrame is loaded so we can get to the content.
rootPage.InputFrameLoaded += new System.EventHandler(rootPage_InputFrameLoaded);
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
rootPage.InputFrameLoaded -= new System.EventHandler(rootPage_InputFrameLoaded);
}
#endregion
#region Use this code if you need access to elements in the input frame - otherwise delete
void rootPage_InputFrameLoaded(object sender, object e)
{
// At this point, we know that the Input Frame has been loaded and we can go ahead
// and reference elements in the page contained in the Input Frame.
// Get a pointer to the content within the IntputFrame.
Page inputFrame = (Page)rootPage.InputFrame.Content;
// Go find the elements that we need for this scenario
// ex: flipView1 = inputFrame.FindName("FlipView1") as FlipView;
}
#endregion
Uri _baseUri = new Uri("ms-appx:///");
private DispatcherTimer _timer;
private async void Grid_Tapped(object sender, TappedRoutedEventArgs e)
{
try
{
item = new Item();
item.Title = "This is a new One First";
item.SetImage(_baseUri, "SampleData/Images/60SprinklesRainbow.png");
item.Subtitle = "Ultrices rutrum sapien vehicula semper lorem volutpat sociis sit maecenas praesent taciti magna nunc odio orci vel tellus nam sed accumsan iaculis dis est";
item.Link = "http://www.blueyonderairlines.com/";
item.Category = "Ice Cream";
item.Description = "Consectetuer lacinia vestibulum tristique sit adipiscing laoreet fusce nibh suspendisse natoque placerat pulvinar ultricies condimentum scelerisque nisi ullamcorper nisl parturient vel suspendisse nam venenatis nunc lorem sed dis sagittis pellentesque luctus sollicitudin morbi posuere vestibulum potenti magnis pellentesque vulputate mattis mauris mollis consectetuer pellentesque pretium montes vestibulum condimentum nulla adipiscing sollicitudin scelerisque ullamcorper pellentesque odio orci rhoncus pede sodales suspendisse parturient viverra curabitur proin aliquam integer augue quam condimentum quisque senectus quis urna scelerisque nostra phasellus ullamcorper cras duis suspendisse sociosqu dolor vestibulum condimentum consectetuer vivamus est fames felis suscipit hac";
item.Content = "aaaA";
_collectionNew.Add(item);
item = new Item();
item.Title = "This is a new One Second";
item.Subtitle = "Ultrices rutrum sapien vehicula semper lorem volutpat sociis sit maecenas praesent taciti magna nunc odio orci vel tellus nam sed accumsan iaculis dis est";
item.Link = "http://www.blueyonderairlines.com/";
item.Category = "Ice Cream";
item.SetImage(_baseUri, "SampleData/Images/60SprinklesRainbow.png");
item.Description = "Consectetuer lacinia vestibulum tristique sit adipiscing laoreet fusce nibh suspendisse natoque placerat pulvinar ultricies condimentum scelerisque nisi ullamcorper nisl parturient vel suspendisse nam venenatis nunc lorem sed dis sagittis pellentesque luctus sollicitudin morbi posuere vestibulum potenti magnis pellentesque vulputate mattis mauris mollis consectetuer pellentesque pretium montes vestibulum condimentum nulla adipiscing sollicitudin scelerisque ullamcorper pellentesque odio orci rhoncus pede sodales suspendisse parturient viverra curabitur proin aliquam integer augue quam condimentum quisque senectus quis urna scelerisque nostra phasellus ullamcorper cras duis suspendisse sociosqu dolor vestibulum condimentum consectetuer vivamus est fames felis suscipit hac";
item.Content = "aaaa";
_collectionNew.Add(item);
scroller.ScrollToHorizontalOffset(2000);
_timer = new DispatcherTimer();
_timer.Interval = new TimeSpan(3000);
_timer.Tick += _timer_Tick;
_timer.Start();
}
catch (Exception ex)
{
throw ex;
}
}
void _timer_Tick(object sender, object e)
{
ItemGridView.ItemsSource = null;
ItemGridView.ItemsSource = _collectionNew;
_timer.Stop();
}
}
}
Пожалуйста, реализовать его в демо-версии и увидеть эффект. там могут быть другие работы вокруг, но они хотели очистить материал как можно быстрее и быстрее. Дайте мне знать, если у вас возникли проблемы с пониманием :)
Включен ли источник источника только для алфавитов D и E или он заполняет все? – Anobik
@Anobik содержит все данные. На данный момент я обновляю источник элемента, чтобы просто отображать соответствующую букву при ее прослушивании, но для этого требуется кнопка сброса, чтобы снова отображать все элементы после однократного прослушивания, что нежелательно. Это решение также испортило zoomedOutView. – kentrh
Итак, в основном вам нужны две вещи 1 - Создать эффект прокрутки 2 - обновить источник товаров с помощью агрессивных алфавитов? в увеличенном масштабе? Я прав? Затем придумайте некоторые обходные пути в качестве ответа. – Anobik