summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.WinRT
diff options
context:
space:
mode:
authorJason Smith <jason.smith@xamarin.com>2016-04-26 15:35:52 -0400
committerJason Smith <jason.smith@xamarin.com>2016-04-26 15:35:52 -0400
commit409e10528495238a680c1bf3867a71f758b0d452 (patch)
tree0cb19f682b0b192ebad3dc0c77cfe32974abe09c /Xamarin.Forms.Platform.WinRT
parent9ae4ea3c82444561353eb77bf746f96cdbfb4583 (diff)
downloadxamarin-forms-409e10528495238a680c1bf3867a71f758b0d452.tar.gz
xamarin-forms-409e10528495238a680c1bf3867a71f758b0d452.tar.bz2
xamarin-forms-409e10528495238a680c1bf3867a71f758b0d452.zip
Carousel clean (#135)
CarouselView moving to preview repo
Diffstat (limited to 'Xamarin.Forms.Platform.WinRT')
-rw-r--r--Xamarin.Forms.Platform.WinRT/CarouselViewRenderer.cs227
-rw-r--r--Xamarin.Forms.Platform.WinRT/Properties/AssemblyInfo.cs1
-rw-r--r--Xamarin.Forms.Platform.WinRT/Resources.xaml40
-rw-r--r--Xamarin.Forms.Platform.WinRT/Xamarin.Forms.Platform.WinRT.csproj7
4 files changed, 22 insertions, 253 deletions
diff --git a/Xamarin.Forms.Platform.WinRT/CarouselViewRenderer.cs b/Xamarin.Forms.Platform.WinRT/CarouselViewRenderer.cs
deleted file mode 100644
index f29909df..00000000
--- a/Xamarin.Forms.Platform.WinRT/CarouselViewRenderer.cs
+++ /dev/null
@@ -1,227 +0,0 @@
-using System;
-using System.Collections.Specialized;
-using System.ComponentModel;
-using System.Linq;
-using Windows.UI.Xaml;
-using Windows.UI.Xaml.Controls;
-using Windows.UI.Xaml.Media;
-using WFlipView = Windows.UI.Xaml.Controls.FlipView;
-using WBinding = Windows.UI.Xaml.Data.Binding;
-using WApp = Windows.UI.Xaml.Application;
-using WSize = Windows.Foundation.Size;
-using WDataTemplate = Windows.UI.Xaml.DataTemplate;
-
-#if WINDOWS_UWP
-
-namespace Xamarin.Forms.Platform.UWP
-#else
-
-namespace Xamarin.Forms.Platform.WinRT
-#endif
-{
- public class CarouselViewRenderer : ViewRenderer<CarouselView, FrameworkElement>
- {
- WFlipView _flipView;
-
- bool _leftAdd;
-
- ICarouselViewController Controller
- {
- get
- {
- return Element;
- }
- }
-
- protected override void OnElementChanged(ElementChangedEventArgs<CarouselView> e)
- {
- base.OnElementChanged(e);
-
- if (e.OldElement != null)
- {
- _flipView.SelectionChanged -= SelectionChanged;
- _flipView.ItemsSource = null;
- Element.CollectionChanged -= CollectionChanged;
- }
-
- if (e.NewElement != null)
- {
- if (_flipView == null)
- {
- _flipView = new FlipView
- {
- IsSynchronizedWithCurrentItem = false,
- ItemTemplate = (WDataTemplate)WApp.Current.Resources["ItemTemplate"]
- };
- }
-
- _flipView.ItemsSource = Element.ItemsSource;
- _flipView.SelectedIndex = Element.Position;
- _flipView.SelectionChanged += SelectionChanged;
- Element.CollectionChanged += CollectionChanged;
- }
-
- if (_flipView != Control)
- SetNativeControl(_flipView);
- }
-
- protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- if (e.PropertyName == "Position" && _flipView.SelectedIndex != Element.Position)
- {
- if (!_leftAdd)
- _flipView.SelectedIndex = Element.Position;
- _leftAdd = false;
- }
-
- base.OnElementPropertyChanged(sender, e);
- }
-
- void CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
- {
- Controller.SendSelectedPositionChanged(_flipView.SelectedIndex);
-
- switch (e.Action)
- {
- case NotifyCollectionChangedAction.Add:
- if (e.NewStartingIndex <= Element.Position)
- {
- _leftAdd = true;
- int position = Element.Position + e.NewItems.Count;
- PositionChanged(position);
- }
- break;
-
- case NotifyCollectionChangedAction.Move:
- break;
-
- case NotifyCollectionChangedAction.Remove:
- if (Controller.Count == 0)
- throw new InvalidOperationException("CarouselView must retain a least one item.");
-
- if (e.OldStartingIndex < Element.Position)
- PositionChanged(Element.Position - e.OldItems.Count);
- break;
-
- case NotifyCollectionChangedAction.Replace:
- break;
-
- case NotifyCollectionChangedAction.Reset:
- break;
-
- default:
- throw new Exception($"Enum value '{(int)e.Action}' is not a member of NotifyCollectionChangedAction enumeration.");
- }
- }
-
- void PositionChanged(int position)
- {
- if (!_leftAdd)
- _flipView.SelectedIndex = position;
- Element.Position = position;
- Controller.SendSelectedPositionChanged(position);
- }
-
- void SelectionChanged(object sender, SelectionChangedEventArgs e)
- {
- object[] addedItems = e.AddedItems.ToArray();
- object[] removedItems = e.RemovedItems.ToArray();
-
- object addedItem = addedItems.SingleOrDefault();
- if (addedItem != null)
- {
- PositionChanged(_flipView.SelectedIndex);
- Controller.SendSelectedItemChanged(addedItems.Single());
- }
- }
- }
-
- public class ItemControl : ContentControl
- {
- CarouselView _carouselView;
- object _item;
- View _view;
-
- public ItemControl()
- {
- DataContextChanged += OnDataContextChanged;
- }
-
- CarouselView CarouselView => LoadCarouselView();
-
- IItemViewController Controller => CarouselView;
-
- protected override WSize ArrangeOverride(WSize finalSize)
- {
- _view.Layout(new Rectangle(0, 0, CarouselView.Width, CarouselView.Height));
- return base.ArrangeOverride(finalSize);
- }
-
- protected override WSize MeasureOverride(WSize availableSize)
- {
- LoadCarouselView();
-
- if (_item != null)
- {
- SetDataContext(_item);
- _item = null;
- }
-
- return base.MeasureOverride(availableSize);
- }
-
- CarouselView LoadCarouselView()
- {
- if (_carouselView != null)
- return _carouselView;
-
- DependencyObject parent = VisualTreeHelper.GetParent(this);
- CarouselViewRenderer renderer = default(CarouselViewRenderer);
-
- do
- {
- if (parent == null)
- return null;
-
- renderer = parent as CarouselViewRenderer;
- if (renderer != null)
- break;
-
- parent = VisualTreeHelper.GetParent(parent);
- } while (true);
-
- _carouselView = renderer.Element;
- return _carouselView;
- }
-
- void OnDataContextChanged(FrameworkElement sender, DataContextChangedEventArgs args)
- {
- object item = args.NewValue;
-
- if (_carouselView != null)
- SetDataContext(item);
-
- else if (item != null)
- _item = item;
- }
-
- void SetDataContext(object item)
- {
- // type item
- object type = Controller.GetItemType(item);
-
- // activate item
- _view = Controller.CreateView(type);
- _view.Parent = CarouselView;
- _view.Layout(new Rectangle(0, 0, CarouselView.Width, CarouselView.Height));
-
- // render item
- IVisualElementRenderer renderer = Platform.CreateRenderer(_view);
- Platform.SetRenderer(_view, renderer);
- Content = renderer;
-
- // bind item
- Controller.BindView(_view, item);
- }
- }
-} \ No newline at end of file
diff --git a/Xamarin.Forms.Platform.WinRT/Properties/AssemblyInfo.cs b/Xamarin.Forms.Platform.WinRT/Properties/AssemblyInfo.cs
index f24feecf..d1975076 100644
--- a/Xamarin.Forms.Platform.WinRT/Properties/AssemblyInfo.cs
+++ b/Xamarin.Forms.Platform.WinRT/Properties/AssemblyInfo.cs
@@ -18,7 +18,6 @@ using Xamarin.Forms.Platform.WinRT;
[assembly: ExportRenderer(typeof(Label), typeof(LabelRenderer))]
[assembly: ExportRenderer(typeof(Button), typeof(ButtonRenderer))]
[assembly: ExportRenderer(typeof(ListView), typeof(ListViewRenderer))]
-[assembly: ExportRenderer(typeof(CarouselView), typeof(CarouselViewRenderer))]
[assembly: ExportRenderer(typeof(ScrollView), typeof(ScrollViewRenderer))]
[assembly: ExportRenderer(typeof(ProgressBar), typeof(ProgressBarRenderer))]
[assembly: ExportRenderer(typeof(Slider), typeof(SliderRenderer))]
diff --git a/Xamarin.Forms.Platform.WinRT/Resources.xaml b/Xamarin.Forms.Platform.WinRT/Resources.xaml
index c1edeeaf..3982521f 100644
--- a/Xamarin.Forms.Platform.WinRT/Resources.xaml
+++ b/Xamarin.Forms.Platform.WinRT/Resources.xaml
@@ -20,28 +20,24 @@
<Setter Property="Background" Value="{ThemeResource ApplicationPageBackgroundThemeBrush}" />
</Style>
- <Style x:Key="ActionSheetList" TargetType="ListView">
- <Setter Property="SelectionMode" Value="None" />
- <Setter Property="ItemContainerStyle">
- <Setter.Value>
- <Style TargetType="ListViewItem">
- <Setter Property="Margin" Value="0" />
- <Setter Property="HorizontalContentAlignment" Value="Stretch" />
- </Style>
- </Setter.Value>
- </Setter>
- <Setter Property="ItemTemplate">
- <Setter.Value>
- <DataTemplate>
- <TextBlock Text="{Binding}" HorizontalAlignment="Stretch" VerticalAlignment="Center" Style="{ThemeResource SubheaderTextBlockStyle}" />
- </DataTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
- <DataTemplate x:Key="ItemTemplate">
- <forms:ItemControl HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" />
- </DataTemplate>
+ <Style x:Key="ActionSheetList" TargetType="ListView">
+ <Setter Property="SelectionMode" Value="None" />
+ <Setter Property="ItemContainerStyle">
+ <Setter.Value>
+ <Style TargetType="ListViewItem">
+ <Setter Property="Margin" Value="0" />
+ <Setter Property="HorizontalContentAlignment" Value="Stretch" />
+ </Style>
+ </Setter.Value>
+ </Setter>
+ <Setter Property="ItemTemplate">
+ <Setter.Value>
+ <DataTemplate>
+ <TextBlock Text="{Binding}" HorizontalAlignment="Stretch" VerticalAlignment="Center" Style="{ThemeResource SubheaderTextBlockStyle}" />
+ </DataTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
<DataTemplate x:Key="CellTemplate">
<forms:CellControl HorizontalContentAlignment="Stretch" Height="{Binding Cell.RenderHeight,RelativeSource={RelativeSource Mode=Self},Converter={StaticResource HeightConverter}}" />
diff --git a/Xamarin.Forms.Platform.WinRT/Xamarin.Forms.Platform.WinRT.csproj b/Xamarin.Forms.Platform.WinRT/Xamarin.Forms.Platform.WinRT.csproj
index 7f41e8ba..6d28b900 100644
--- a/Xamarin.Forms.Platform.WinRT/Xamarin.Forms.Platform.WinRT.csproj
+++ b/Xamarin.Forms.Platform.WinRT/Xamarin.Forms.Platform.WinRT.csproj
@@ -37,7 +37,8 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- <NoWarn></NoWarn>
+ <NoWarn>
+ </NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
@@ -47,7 +48,8 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
- <NoWarn></NoWarn>
+ <NoWarn>
+ </NoWarn>
</PropertyGroup>
<ItemGroup>
<!-- A reference to the entire .NET Framework is automatically included -->
@@ -66,7 +68,6 @@
</Compile>
</ItemGroup>
<ItemGroup Condition=" '$(OS)' != 'Unix' ">
- <Compile Include="CarouselViewRenderer.cs" />
<Compile Include="NativeViewWrapper.cs" />
<Compile Include="NativeViewWrapperRenderer.cs" />
<Compile Include="ViewExtensions.cs" />