summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.WinRT/ListGroupHeaderPresenter.cs
blob: 458189779c2e2da02a0a42425f77a8d2c0dd633b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;

#if WINDOWS_UWP

namespace Xamarin.Forms.Platform.UWP
#else

namespace Xamarin.Forms.Platform.WinRT
#endif
{
	public class ListGroupHeaderPresenter : Windows.UI.Xaml.Controls.ContentPresenter
	{
		void OnTapped(object sender, TappedRoutedEventArgs tappedRoutedEventArgs)
		{
			var element = VisualTreeHelper.GetParent(this) as FrameworkElement;
			while (element != null)
			{
				var list = element as Windows.UI.Xaml.Controls.ListView;
				if (list != null)
					element = list.SemanticZoomOwner;

				if (element == null)
					break;

				var zoom = element as SemanticZoom;
				if (zoom != null)
				{
					zoom.ToggleActiveView();

					var grid = zoom.ZoomedOutView as GridView;
					if (grid != null)
					{
						grid.MakeVisible(new SemanticZoomLocation { Item = DataContext });
					}

					return;
				}

				element = VisualTreeHelper.GetParent(element) as FrameworkElement;
			}
		}
	}
}