diff options
Diffstat (limited to 'Xamarin.Forms.Platform.WP8/CellTemplateSelector.cs')
-rw-r--r-- | Xamarin.Forms.Platform.WP8/CellTemplateSelector.cs | 60 |
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 |