/// <summary> /// XAML Clicked attribute version /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void OnClickedClock(object sender, EventArgs e) { string xml = @"<?xml version='1.0' encoding='utf-8' ?> <ContentPage xmlns='http://xamarin.com/schemas/2014/forms' xmlns:x='http://schemas.microsoft.com/winfx/2009/xaml' xmlns:local='clr-namespace:XFormsSampleApp;assembly=XFormsSampleApp' x:Class='XFormsSampleApp.MainPage' Title='Clock Page'> <ContentPage.BindingContext> <local:ClockViewModel /> </ContentPage.BindingContext> <StackLayout> " + "<Label x:Name='label1' Text=\"{Binding DateTime, StringFormat='today is {0:T}'}\"" + @" Font='Large' HorizontalOptions='Center' VerticalOptions='Center' /> <Button Text='Now' x:Name='button1' /> <Button Text='bind now' Command='{Binding ClickCommand}' /> </StackLayout></ContentPage>"; var page = PageXaml.LoadXaml <ContentPage>(xml); var vm = page.BindingContext as ClockViewModel; page.FindByName <Button>("button1").Clicked += (s, ee) => { vm.DateTime = DateTime.Now; }; this.Navigation.PushAsync(page); }
public void SliderTransformsPage() { var fs = File.OpenText(@"Xaml\SliderTransformsPage.xaml"); var xaml = fs.ReadToEnd(); var page = PageXaml.LoadXaml <ContentPage>(xaml); Assert.IsNotNull(page); var grid = page.Content as Grid; Assert.AreEqual(5, grid.RowDefinitions.Count); Assert.AreEqual(true, grid.RowDefinitions[0].Height.IsStar); Assert.AreEqual(true, grid.RowDefinitions[1].Height.IsAuto); Assert.AreEqual(true, grid.RowDefinitions[2].Height.IsAuto); Assert.AreEqual(2, grid.ColumnDefinitions.Count); Assert.AreEqual(true, grid.ColumnDefinitions[0].Width.IsAuto); Assert.AreEqual(true, grid.ColumnDefinitions[1].Width.IsStar); Assert.AreEqual(9, grid.Children.Count); var layout = grid.Children[0] as StackLayout; Assert.IsNotNull(layout); var slider = grid.Children[1] as Slider; Assert.IsNotNull(slider); Assert.AreEqual(10.0, slider.Maximum); var label = grid.Children[2] as Label; Assert.AreEqual(TextAlignment.Center, label.YAlign); }
public void TestCommand() { string xml = @"<?xml version='1.0' encoding='utf-8' ?> <ContentPage xmlns='http://xamarin.com/schemas/2014/forms' xmlns:x='http://schemas.microsoft.com/winfx/2009/xaml' xmlns:local='clr-namespace:XformsProvider.Test;assembly=XformsProvider.Test' x:Class='XformsProvider.Test.TestBindingContext' Title='Clock Page'> <ContentPage.BindingContext> <local:ClockViewModel /> </ContentPage.BindingContext> " + "<Label x:Name='label1' Text=\"{Binding DateTime, StringFormat='{0:T}'}\"" + @" Font='Large' HorizontalOptions='Center' VerticalOptions='Center'> </Label> <Button x:Name='button1' Text='Click now' Command='{Binding ClickCommand}' /> </ContentPage>"; var page = PageXaml.LoadXaml <ContentPage>(xml); Assert.IsNotNull(page); var label = page.FindByName <Label>("label1"); var button = page.FindByName <Button>("button1"); Assert.IsNotNull(page.BindingContext); Assert.IsNotNull(button); Assert.IsNotNull(button.Command); }
public void XamlPlusCodePage() { var fs = File.OpenText(@"Xaml\XamlPlusCodePage.xaml"); var xaml = fs.ReadToEnd(); var page = PageXaml.LoadXaml <ContentPage>(xaml); Assert.IsNotNull(page); Assert.AreEqual("XAML + Code Page", page.Title); var layout = page.Content as StackLayout; Assert.IsNotNull(layout); Assert.AreEqual(3, layout.Children.Count); var slider = layout.Children[0] as Slider; var label = layout.Children[1] as Label; var button = layout.Children[2] as Button; Assert.IsNotNull(slider); Assert.IsNotNull(label); Assert.IsNotNull(button); Assert.AreEqual(LayoutOptions.CenterAndExpand, slider.VerticalOptions); Assert.AreEqual(LayoutOptions.Center, label.HorizontalOptions); Assert.AreEqual(LayoutOptions.CenterAndExpand, label.VerticalOptions); Assert.AreEqual("Click Me!", button.Text); }
public void LoadSample() { string xml = @"<?xml version='1.0' encoding='utf-8' ?> <ContentPage xmlns='http://xamarin.com/schemas/2014/forms' xmlns:x='http://schemas.microsoft.com/winfx/2009/xaml' x:Class='XFormsPreview.NewPage'> <StackLayout> <Label Text='New Page' /> <Button Text='Click me' /> </StackLayout> </ContentPage> "; var page = PageXaml.LoadXaml <ContentPage>(xml); Assert.IsNotNull(page); var layout = page.Content as StackLayout; Assert.IsNotNull(layout); Assert.AreEqual(2, layout.Children.Count); var label = layout.Children[0] as Label; var button = layout.Children[1] as Button; Assert.IsNotNull(label); Assert.IsNotNull(button); Assert.AreEqual("New Page", label.Text); Assert.AreEqual("Click me", button.Text); }
void OnClickAbsoluteLayoutPreview(object sender, EventArgs e) { var st = ResourceLoader.GetObject("XFormsPreviewer.Xaml.AbsoluteDemoPage.xaml"); var xaml = new StreamReader(st).ReadToEnd(); var page = PageXaml.LoadXaml <ContentPage>(xaml); this.Navigation.PushAsync(page); }
void OnClickKeyboardPreview(object sender, EventArgs e) { var st = ResourceLoader.GetObject("XFormsPreviewer.Xaml.KeypadPage.xaml"); var xaml = new StreamReader(st).ReadToEnd(); var page = PageXaml.LoadXaml(xaml); this.Navigation.PushAsync(page); }
void OnClickGridPreview(object sender, EventArgs e) { /// リソースから表示するテスト var st = ResourceLoader.GetObject("XFormsPreviewer.Xaml.GridDemoPage.xaml"); var xaml = new StreamReader(st).ReadToEnd(); var page = PageXaml.LoadXaml <ContentPage>(xaml); this.Navigation.PushAsync(page); }
/// <summary> /// HTTP クライアント経由で XAML ファイルをロードする /// http://hostname:10150/get/[num] 形式で取得する /// [num] 部分は XFormsPreviewHost と合わせる /// </summary> /// <param name="sender"></param> /// <param name="e"></param> async void OnClickSample0(object sender, EventArgs e) { var hc = new HttpClient(); try { var res = await hc.GetStringAsync(this.Uri + "0"); var page = PageXaml.LoadXaml(res); await this.Navigation.PushAsync(page); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); } }
public void AbsoluteDemoPage() { var fs = File.OpenText(@"Xaml\AbsoluteDemoPage.xaml"); var xaml = fs.ReadToEnd(); var page = PageXaml.LoadXaml <ContentPage>(xaml); Assert.IsNotNull(page); var layout = page.Content as AbsoluteLayout; Assert.AreEqual(8, layout.Children.Count); Assert.AreEqual(Color.FromHex("#FF8080"), layout.BackgroundColor); var box = layout.Children[0] as BoxView; Assert.AreEqual(Color.FromHex("#8080FF"), box.Color); box = layout.Children[1] as BoxView; Assert.AreEqual(Color.FromHex("#8080FF"), box.Color); }
void OnClickPreview(object sender, EventArgs e) { // XAML 文字列を直接書き込むパターン string xml = @"<?xml version='1.0' encoding='utf-8' ?> <ContentPage xmlns='http://xamarin.com/schemas/2014/forms' xmlns:x='http://schemas.microsoft.com/winfx/2009/xaml' x:Class='XFormsPreview.NewPage'> <StackLayout> <Label Text='New Page' /> <Button Text='click me' /> </StackLayout> </ContentPage> "; var page = PageXaml.LoadXaml(xml); this.Navigation.PushAsync(page); }
public void HelloXamlPage() { var fs = File.OpenText(@"Xaml\HelloXamlPage.xaml"); var xaml = fs.ReadToEnd(); var page = PageXaml.LoadXaml <ContentPage>(xaml); Assert.IsNotNull(page); var label = page.Content as Label; Assert.IsNotNull(label); Assert.AreEqual("Hello, XAML!", label.Text); Assert.AreEqual(LayoutOptions.Start, label.VerticalOptions); Assert.AreEqual(TextAlignment.Center, label.XAlign); Assert.AreEqual(-15.0, label.Rotation); Assert.AreEqual(true, label.IsVisible); // Assert.AreEqual(label.Font) Assert.AreEqual(Color.Aqua, label.TextColor); }
public void TestGetName() { string xml = @"<?xml version='1.0' encoding='utf-8' ?> <ContentPage xmlns='http://xamarin.com/schemas/2014/forms' xmlns:x='http://schemas.microsoft.com/winfx/2009/xaml' x:Class='XFormsPreview.NewPage'> <StackLayout> <Label x:Name='label1' Text='New Page' /> <Button x:Name='button1' Text='Click me' /> </StackLayout> </ContentPage> "; var page = PageXaml.LoadXaml <ContentPage>(xml); Assert.IsNotNull(page); var layout = page.Content as StackLayout; Assert.IsNotNull(layout); Assert.AreEqual(2, layout.Children.Count); var label = layout.Children[0] as Label; var button = layout.Children[1] as Button; Assert.IsNotNull(label); Assert.IsNotNull(button); Assert.AreEqual("New Page", label.Text); Assert.AreEqual("Click me", button.Text); // Assert.AreEqual("XFormsPreview.NewPage", layout.ClassName); // test // var label1 = PageXaml.FindByName(page, "label1") as Label; // var button1 = PageXaml.FindByName(page, "button1") as Button; var label1 = page.FindByName <Label>("label1"); var button1 = page.FindByName <Button>("button1"); Assert.IsNotNull(label1); Assert.AreEqual("New Page", label1.Text); Assert.AreEqual("Click me", button1.Text); }
public void TestBinding() { string xml = @"<?xml version='1.0' encoding='utf-8' ?> <ContentPage xmlns='http://xamarin.com/schemas/2014/forms' xmlns:x='http://schemas.microsoft.com/winfx/2009/xaml' xmlns:local='clr-namespace:XformsProvider.Test;assembly=XformsProvider.Test' x:Class='XformsProvider.Test.TestBindingContext' Title='Clock Page'> <ContentPage.BindingContext> <local:ClockViewModel /> </ContentPage.BindingContext> " + "<Label x:Name='label1' Text=\"{Binding DateTime, StringFormat='{0:T}'}\"" + @" Font='Large' HorizontalOptions='Center' VerticalOptions='Center'> </Label> </ContentPage>"; var page = PageXaml.LoadXaml <ContentPage>(xml); Assert.IsNotNull(page); var label = page.FindByName <Label>("label1"); Assert.IsNotNull(label); var bind = label.BindingContext as ClockViewModel; Assert.IsNotNull(bind); Assert.AreEqual(2014, bind.DateTime.Year); Assert.AreEqual(5, bind.DateTime.Month); Assert.AreEqual(2, bind.DateTime.Day); Assert.AreEqual("2014/05/02 0:00:00", label.Text); var data = page.BindingContext as ClockViewModel; Assert.IsNotNull(data); // Xamarin.Forms.Forms.Init() が必要 // プラットフォーム毎の Xamarin.Forms.Core に入っている // data.DateTime = new DateTime(2000, 1, 2); // Assert.AreEqual("", label.Text); }
public void TestSetEvent() { string xml = @"<?xml version='1.0' encoding='utf-8' ?> <ContentPage xmlns='http://xamarin.com/schemas/2014/forms' xmlns:x='http://schemas.microsoft.com/winfx/2009/xaml' x:Class='XformsProvider.Test.TestEvents'> <StackLayout> <Label x:Name='label1' Text='New Page' /> <Button x:Name='button1' Clicked='OnClick' /> </StackLayout> </ContentPage> "; var page = PageXaml.LoadXaml <ContentPage>(xml); Assert.IsNotNull(page); var label = page.FindByName <Label>("label1"); var button = page.FindByName <Button>("button1"); Assert.IsNotNull(button); }
public void KeypadPage() { var fs = File.OpenText(@"Xaml\KeypadPage.xaml"); var xaml = fs.ReadToEnd(); var page = PageXaml.LoadXaml <ContentPage>(xaml); Assert.IsNotNull(page); var grid = page.Content as Grid; Assert.AreEqual(5, grid.RowDefinitions.Count); Assert.AreEqual(3, grid.ColumnDefinitions.Count); var grid2 = grid.Children[0] as Grid; Assert.IsNotNull(grid2); Assert.AreEqual(2, grid2.ColumnDefinitions.Count); Assert.AreEqual(true, grid2.ColumnDefinitions[0].Width.IsStar); Assert.AreEqual(true, grid2.ColumnDefinitions[1].Width.IsAuto); var frame = grid2.Children[0] as Frame; Assert.IsNotNull(frame); Assert.AreEqual(Color.Accent, frame.OutlineColor); Assert.IsNotNull(frame.Content as Label); var button = grid2.Children[1] as Button; Assert.IsNotNull(button); var b1 = grid.Children[1] as Button; Assert.IsNotNull(b1); Assert.AreEqual("1", b1.Text); var b2 = grid.Children[2] as Button; Assert.IsNotNull(b2); Assert.AreEqual("2", b2.Text); var b3 = grid.Children[3] as Button; Assert.IsNotNull(b3); Assert.AreEqual("3", b3.Text); }
public void SliderBindingsPage() { var fs = File.OpenText(@"Xaml\SliderBindingsPage.xaml"); var xaml = fs.ReadToEnd(); var page = PageXaml.LoadXaml <ContentPage>(xaml); Assert.IsNotNull(page); var layout = page.Content as StackLayout; Assert.AreEqual(3, layout.Children.Count); var sl = layout.Children[0] as Slider; Assert.AreEqual(360.0, sl.Maximum); Assert.AreEqual(LayoutOptions.CenterAndExpand, sl.VerticalOptions); var label = layout.Children[1] as Label; // Assert.AreEqual(Font, label.Font); Assert.AreEqual("ROTATION", label.Text); Assert.AreEqual(LayoutOptions.Center, label.HorizontalOptions); Assert.AreEqual(LayoutOptions.CenterAndExpand, label.VerticalOptions); }
public void GridDemoPage() { var fs = File.OpenText(@"Xaml\GridDemoPage.xaml"); var xaml = fs.ReadToEnd(); var page = PageXaml.LoadXaml <ContentPage>(xaml); Assert.IsNotNull(page); Assert.AreEqual("Grid Demo Page", page.Title); Assert.AreEqual(new Thickness(0, 20, 0, 0), page.Padding); var grid = page.Content as Grid; Assert.IsNotNull(grid); Assert.AreEqual(3, grid.RowDefinitions.Count); Assert.AreEqual(3, grid.ColumnDefinitions.Count); Assert.AreEqual(7, grid.Children.Count); Assert.AreEqual(true, grid.RowDefinitions[0].Height.IsAuto); Assert.AreEqual(true, grid.RowDefinitions[1].Height.IsStar); Assert.AreEqual(100.0, grid.RowDefinitions[2].Height.Value); Assert.AreEqual(true, grid.ColumnDefinitions[0].Width.IsAuto); Assert.AreEqual(true, grid.ColumnDefinitions[1].Width.IsStar); Assert.AreEqual(100.0, grid.ColumnDefinitions[2].Width.Value); var label = grid.Children[0] as Label; Assert.IsNotNull(label); Assert.AreEqual(Color.White, label.TextColor); Assert.AreEqual(Color.Blue, label.BackgroundColor); var boxview = grid.Children[1] as BoxView; Assert.IsNotNull(boxview); Assert.AreEqual(Color.Silver, boxview.Color); boxview = grid.Children[2] as BoxView; Assert.IsNotNull(boxview); Assert.AreEqual(Color.Teal, boxview.Color); }
/// <summary> /// Xamarin.Forms.FindByName を変更する拡張メソッド /// </summary> /// <param name="page"></param> /// <param name="name"></param> /// <returns></returns> public static object FindByName(this Xamarin.Forms.Page page, string name) { return(PageXaml.FindByName(page, name)); }