summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.WP8/CellTemplateSelector.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Platform.WP8/CellTemplateSelector.cs')
-rw-r--r--Xamarin.Forms.Platform.WP8/CellTemplateSelector.cs60
1 files changed, 60 insertions, 0 deletions
diff --git a/Xamarin.Forms.Platform.WP8/CellTemplateSelector.cs b/Xamarin.Forms.Platform.WP8/CellTemplateSelector.cs
new file mode 100644
index 00000000..09d939fd
--- /dev/null
+++ b/Xamarin.Forms.Platform.WP8/CellTemplateSelector.cs
@@ -0,0 +1,60 @@
+using System;
+using System.Globalization;
+using System.Windows;
+
+namespace Xamarin.Forms.Platform.WinPhone
+{
+ public class HeightConverter : System.Windows.Data.IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ var val = (double)value;
+ return val > 0 ? val : double.NaN;
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ [Obsolete("Deprecated in favor of CellControl")]
+ public class CellTemplateSelector : DataTemplateSelector
+ {
+ public static readonly DependencyProperty SourceProperty = DependencyProperty.Register("Source", typeof(object), typeof(CellTemplateSelector),
+ new PropertyMetadata((o, e) => ((CellTemplateSelector)o).SetSource(e.OldValue, e.NewValue)));
+
+ public CellTemplateSelector()
+ {
+ Loaded += (sender, args) => SetBinding(SourceProperty, new System.Windows.Data.Binding());
+ Unloaded += (sender, args) =>
+ {
+ var cell = DataContext as Cell;
+ if (cell != null)
+ cell.SendDisappearing();
+ };
+ }
+
+ public override System.Windows.DataTemplate SelectTemplate(object item, DependencyObject container)
+ {
+ var cell = item as Cell;
+ if (cell == null)
+ return null;
+
+ var renderer = Registrar.Registered.GetHandler<ICellRenderer>(cell.GetType());
+ return renderer.GetTemplate(cell);
+ }
+
+ void SetSource(object oldSource, object newSource)
+ {
+ var oldCell = oldSource as Cell;
+ var newCell = newSource as Cell;
+
+ if (oldCell != null)
+ oldCell.SendDisappearing();
+
+ if (newCell != null)
+ newCell.SendAppearing();
+ }
+ }
+} \ No newline at end of file