summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Pages/DataSourceBindingExtension.cs
blob: 279240e7633d2e53867087d4e678e1eeff9073f6 (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
using System;
using Xamarin.Forms.Xaml;

namespace Xamarin.Forms.Pages
{
	[ContentProperty("Path")]
	public sealed class DataSourceBindingExtension : IMarkupExtension<BindingBase>
	{
		public DataSourceBindingExtension()
		{
			Mode = BindingMode.Default;
			Path = Binding.SelfPath;
		}

		public IValueConverter Converter { get; set; }

		public object ConverterParameter { get; set; }

		public BindingMode Mode { get; set; }

		public string Path { get; set; }

		public string StringFormat { get; set; }

		object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider)
		{
			return (this as IMarkupExtension<BindingBase>).ProvideValue(serviceProvider);
		}

		BindingBase IMarkupExtension<BindingBase>.ProvideValue(IServiceProvider serviceProvider)
		{
			return new DataSourceBinding(Path, Mode, Converter, ConverterParameter, StringFormat);
		}
	}
}