コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
            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);
            }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        /// <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);
            }
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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);
        }
コード例 #12
0
        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);
        }
コード例 #13
0
        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);
        }
コード例 #14
0
            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);
            }
コード例 #15
0
        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);
        }
コード例 #16
0
        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);
        }
コード例 #17
0
        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);
        }
コード例 #18
0
        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);
        }
コード例 #19
0
 /// <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));
 }