Hướng dẫn is xaml like html? - xaml có giống html không?

Nhiều bạn hay hỏi mình code bằng ngôn ngữ gì, thích công nghệ gì. Anh em làm trong ngành ai cũng biết, đi làm một thời gian thì sẽ phải dụng khá nhiều ngôn ngữ/công nghệ, không thể nói vài dòng là hết được!

Do vậy, hôm nay mình viết blog chia sẻ về các công nghệ/ngôn ngữ lập trình mình đã sử dụng qua mấy năm đi làm nha. Mình cũng review nhẹ điểm mạng/yếu, những điều mình thích/không thích của những thứ này luôn!đã sử dụng qua mấy năm đi làm nha. Mình cũng review nhẹ điểm mạng/yếu, những điều mình thích/không thích của những thứ này luôn!

Continue reading Review nhẹ các ngôn ngữ, công nghệ, framework mà mình đã và đang dùng kiếm cơm – Phần 1→Review nhẹ các ngôn ngữ, công nghệ, framework mà mình đã và đang dùng kiếm cơm – Phần 1

WinFom là một công nghệ của Microsoft, cho phép lập trình các ứng dụng Windows. Nhờ tính tiện ích, dễ code, giao diện design kéo thả đơn giản, … Win Form đã được sử dụng để phát triển rất nhiều ứng dụng. Vì tuổi đời đã khá cao [ra đời vào năm 2003] nên WinForm chính thức bị Microsoft khai tử vào năm 2014. Tuy nhiên, ở Việt Nam, Win Form vẫn còn sống khỏe, sống tốt. Tại sao vậy? Thử đọc bài viết để biết nhé.khai tử vào năm 2014. Tuy nhiên, ở Việt Nam, Win Form vẫn còn sống khỏe, sống tốt. Tại sao vậy? Thử đọc bài viết để biết nhé.

Continue reading Series C# hay ho: Tại sao WinForm vẫn “chưa chết” – Có nên học WinForm hay không ?→Series C# hay ho: Tại sao WinForm vẫn “chưa chết” – Có nên học WinForm hay không ?

Lập trình viên giỏi không phải chỉ biết code

Bỏ qua nội dung chính

Trình duyệt này không còn được hỗ trợ.

Nâng cấp lên Microsoft Edge để tận dụng các tính năng mới nhất, cập nhật bảo mật và hỗ trợ kỹ thuật.

Phần 1. Bắt đầu với XAML

  • Bài báo
  • 07/08/2021
  • 15 phút để đọc

Trong bài viết này

Tải xuống mẫu

Trong ứng dụng Xamarin.Forms, XAML chủ yếu được sử dụng để xác định nội dung trực quan của một trang và hoạt động cùng với tệp C# Code.

Tệp mã phía sau cung cấp hỗ trợ mã cho đánh dấu. Cùng nhau, hai tệp này đóng góp vào một định nghĩa lớp mới bao gồm các chế độ xem con và khởi tạo thuộc tính. Trong tệp XAML, các lớp và thuộc tính được tham chiếu với các phần tử và thuộc tính XML và các liên kết giữa đánh dấu và mã được thiết lập.

Tạo ra giải pháp

Để bắt đầu chỉnh sửa tệp XAML đầu tiên của bạn, hãy sử dụng Visual Studio hoặc Visual Studio cho Mac để tạo giải pháp Xamarin.Forms mới. [Chọn tab bên dưới tương ứng với môi trường của bạn.]

  • Visual Studio
  • Visual Studio cho Mac

Trong Windows, khởi chạy Visual Studio 2019 và trong cửa sổ Bắt đầu, nhấp vào Tạo một dự án mới để tạo một dự án mới:Create a new project to create a new project:

Trong cửa sổ Tạo dự án mới, chọn Mobile trong loại bỏ loại dự án, chọn mẫu ứng dụng di động [Xamarin.Forms] và nhấp vào nút tiếp theo:Create a new project window, select Mobile in the Project type drop down, select the Mobile App [Xamarin.Forms] template, and click the Next button:

Trong cấu hình cửa sổ dự án mới của bạn, đặt tên dự án thành XAMLSAMPLES [hoặc bất cứ điều gì bạn thích] và nhấp vào nút Tạo.Configure your new project window, set the Project name to XamlSamples [or whatever your prefer], and click the Create button.

Trong hộp thoại ứng dụng Nền tảng Cross mới, nhấp vào trống và nhấp vào nút OK:New Cross Platform App dialog, click Blank, and click the OK button:

Bốn dự án được tạo trong giải pháp: Thư viện tiêu chuẩn XAMLSAMPLES .NET, xamlsamples.android, xamlsamples.ios và giải pháp nền tảng Windows phổ quát, xamlsamples.uwp.XamlSamples .NET Standard library, XamlSamples.Android, XamlSamples.iOS, and the Universal Windows Platform solution, XamlSamples.UWP.

Trong Visual Studio cho Mac, chọn Tệp> Giải pháp mới từ menu. Trong hộp thoại dự án mới, chọn Multiplatform> Ứng dụng ở bên trái và ứng dụng Biểu mẫu trống [không phải hình thức] từ danh sách mẫu:File > New Solution from the menu. In the New Project dialog, select Multiplatform > App at the left, and Blank Forms App [not Forms App] from the template list:

Nhấn tiếp theo.Next.

Trong hộp thoại tiếp theo, hãy đặt cho dự án một tên là XAMLSAMPLES [hoặc bất cứ điều gì bạn thích]. Đảm bảo rằng nút Radio tiêu chuẩn sử dụng .NET được chọn:XamlSamples [or whatever you prefer]. Make sure that the Use .NET Standard radio button is selected:

Nhấn tiếp theo.Next.

Trong hộp thoại tiếp theo, hãy đặt cho dự án một tên là XAMLSAMPLES [hoặc bất cứ điều gì bạn thích]. Đảm bảo rằng nút Radio tiêu chuẩn sử dụng .NET được chọn:

Trong hộp thoại sau, bạn có thể chọn một vị trí cho dự án:Create

Nhấn TạoXamlSamples .NET Standard library, XamlSamples.Android, and XamlSamples.iOS.

Ba dự án được tạo trong giải pháp: Thư viện tiêu chuẩn XAMLSAMPLES .NET, xamlsamples.android và xamlsamples.ios.XamlSamples solution, you might want to test your development environment by selecting the various platform projects as the solution startup project, and building and deploying the simple application created by the project template on either phone emulators or real devices.

Sau khi tạo giải pháp XAMLSAMPLES, bạn có thể muốn kiểm tra môi trường phát triển của mình bằng cách chọn các dự án nền tảng khác nhau làm dự án khởi động giải pháp, và xây dựng và triển khai ứng dụng đơn giản được tạo bởi mẫu dự án trên trình giả lập điện thoại hoặc thiết bị thực.XamlSamples .NET Standard library project is where you’ll be spending virtually all of your programming time. These articles will not venture outside of that project.

Trừ khi bạn cần viết mã dành riêng cho nền tảng, dự án thư viện tiêu chuẩn XAMLSAMPLES .NET được chia sẻ là nơi bạn sẽ dành hầu như tất cả thời gian lập trình của mình. Những bài viết này sẽ không mạo hiểm bên ngoài dự án đó.

Giải phẫu tệp XAMLXamlSamples .NET Standard library are a pair of files with the following names:

  • Trong thư viện tiêu chuẩn XAMLSAMPLES .NET là một cặp tệp có tên sau:, the XAML file; and
  • App.xaml, tệp xaml; và, a C# code-behind file associated with the XAML file.

App.xaml.cs, một tệp C# Code được liên kết với tệp XAML.App.xaml to see the code-behind file.

Bạn sẽ cần nhấp vào mũi tên bên cạnh App.xaml để xem tệp phía sau mã.App.xaml and App.xaml.cs contribute to a class named

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
4 that derives from
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
5. Most other classes with XAML files contribute to a class that derives from
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
6; those files use XAML to define the visual contents of an entire page. This is true of the other two files in the XamlSamples project:

  • Cả App.xaml và App.xaml.cs đều đóng góp cho một lớp có tên
    using Xamarin.Forms;
    
    namespace XamlSamples
    {
        public partial class MainPage : ContentPage
        {
            public MainPage[]
            {
                InitializeComponent[];
            }
        }
    }
    
    4 xuất phát từ
    using Xamarin.Forms;
    
    namespace XamlSamples
    {
        public partial class MainPage : ContentPage
        {
            public MainPage[]
            {
                InitializeComponent[];
            }
        }
    }
    
    5. Hầu hết các lớp khác với các tệp XAML đều đóng góp cho một lớp xuất phát từ
    using Xamarin.Forms;
    
    namespace XamlSamples
    {
        public partial class MainPage : ContentPage
        {
            public MainPage[]
            {
                InitializeComponent[];
            }
        }
    }
    
    6; Những tệp đó sử dụng XAML để xác định nội dung trực quan của toàn bộ trang. Điều này đúng với hai tệp khác trong dự án XAMLSAMPLES:
    , the XAML file; and
  • Mainpage.xaml, tệp XAML; và, the C# code-behind file.

Mainpage.xaml.cs, tệp C# Code.MainPage.xaml file looks like this [although the formatting might be a little different]:



    
        
        
    


Tệp MainPage.xaml trông như thế này [mặc dù định dạng có thể hơi khác một chút]:

Hai tuyên bố tên XML [

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
7] đề cập đến URI, phần đầu tiên dường như trên trang web Xamarin, và lần thứ hai trên Microsoft Microsoft. Don Patrick bận tâm kiểm tra những gì uris chỉ ra. Không có cái gì ở đó. Chúng chỉ đơn giản là URI thuộc sở hữu của Xamarin và Microsoft, và về cơ bản chúng hoạt động như các định danh phiên bản.

Tuyên bố không gian tên XML đầu tiên có nghĩa là các thẻ được xác định trong tệp XAML không có tiền tố đề cập đến các lớp trong xamarin.forms, ví dụ

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
6. Tuyên bố không gian tên thứ hai xác định tiền tố là
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
9. Điều này được sử dụng cho một số yếu tố và thuộc tính là nội tại của chính XAML và được hỗ trợ bởi các triển khai khác của XAML. Tuy nhiên, các yếu tố và thuộc tính này hơi khác nhau tùy thuộc vào năm được nhúng trong URI. Xamarin.Forms hỗ trợ đặc tả XAML 2009, nhưng không phải tất cả.

Tuyên bố không gian tên ____2020 cho phép bạn truy cập các lớp khác từ dự án Thư viện tiêu chuẩn .NET.

Vào cuối thẻ đầu tiên đó, tiền tố

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
9 được sử dụng cho một thuộc tính có tên

    

    

2. Bởi vì việc sử dụng tiền tố
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
9 này hầu như là phổ biến đối với không gian tên XAML, các thuộc tính XAML như

    

    

2 hầu như luôn được gọi là

    

    

5.

Thuộc tính


    

    

5 chỉ định một tên lớp .NET đủ điều kiện: lớp

    

    

7 trong không gian tên

    

    

8. Điều này có nghĩa là tệp XAML này xác định một lớp mới có tên

    

    

7 trong không gian tên

    

    

8 xuất phát từ ________ 16 Thẻ trong đó thuộc tính

    

    

5 xuất hiện.

Thuộc tính


    

    

5 chỉ có thể xuất hiện trong phần tử gốc của tệp XAML để xác định lớp C# dẫn xuất. Đây là lớp mới duy nhất được xác định trong tệp XAML. Mọi thứ khác xuất hiện trong tệp XAML thay vào đó chỉ đơn giản là khởi tạo từ các lớp hiện có và khởi tạo.MainPage.xaml.cs file looks like this [aside from unused

    

        

    

4 directives]:

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}

Tệp MainPage.xaml.cs trông giống như thế này [ngoài các chỉ thị


    

        

    

4 không sử dụng]:

Khi Visual Studio xây dựng dự án, nó phân tích tệp XAML để tạo tệp mã C#. Nếu bạn nhìn vào xamlsamples \ xamlsamples \ obj \ debug thư mục, bạn sẽ tìm thấy một tệp có tên xamlsamples.mainpage.xaml.g.cs. Các ’G, viết tắt của được tạo ra. Đây là định nghĩa lớp một phần khác của


    

    

7 chứa định nghĩa của phương thức

    

        

    

9 được gọi từ hàm tạo

    

    

7. Hai định nghĩa lớp

    

    

7 này sau đó có thể được biên dịch cùng nhau. Tùy thuộc vào việc XAML được biên dịch hay không, tệp XAML hoặc dạng nhị phân của tệp XAML được nhúng trong thực thi.XamlSamples\XamlSamples\obj\Debug directory, you’ll find a file named XamlSamples.MainPage.xaml.g.cs. The ‘g’ stands for generated. This is the other partial class definition of

    

    

7 that contains the definition of the

    

        

    

9 method called from the

    

    

7 constructor. These two partial

    

    

7 class definitions can then be compiled together. Depending on whether the XAML is compiled or not, either the XAML file or a binary form of the XAML file is embedded in the executable.

Khi chạy, mã trong dự án nền tảng cụ thể gọi phương thức

public App[]
{
    InitializeComponent[];
    MainPage = new NavigationPage[new MainPage[]];
}
4, chuyển cho nó một thể hiện mới của lớp
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
4 trong thư viện .NET Standard. Chất xây dựng lớp
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
4 khởi tạo

    

    

7. Chất xây dựng của lớp đó gọi

    

        

    

9, sau đó gọi phương thức
public App[]
{
    InitializeComponent[];
    MainPage = new NavigationPage[new MainPage[]];
}
9 trích xuất tệp XAML [hoặc nhị phân được biên dịch của nó] từ thư viện tiêu chuẩn .NET.
public App[]
{
    InitializeComponent[];
    MainPage = new NavigationPage[new MainPage[]];
}
9 Khởi tạo tất cả các đối tượng được xác định trong tệp XAML, kết nối tất cả chúng lại với nhau trong các mối quan hệ cha mẹ-con, đính kèm các trình xử lý sự kiện được xác định trong mã với các sự kiện được đặt trong tệp XAML và đặt cây kết quả của các đối tượng làm nội dung của trang.

Mặc dù bạn thường không cần phải dành nhiều thời gian với các tệp mã được tạo, nhưng đôi khi các ngoại lệ thời gian chạy được nâng lên trên mã trong các tệp được tạo, vì vậy bạn nên làm quen với chúng.

Khi bạn biên dịch và chạy chương trình này, phần tử

public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
1 xuất hiện ở trung tâm của trang như XAML gợi ý:

Đối với hình ảnh thú vị hơn, tất cả những gì bạn cần là XAML thú vị hơn.

Thêm trang XAML mới

  • Visual Studio
  • Visual Studio cho Mac

Để thêm các lớp

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
6 dựa trên XAML khác vào dự án của bạn, hãy chọn dự án thư viện tiêu chuẩn XAMLSAMPLES .NET, nhấp chuột phải và chọn Thêm> Mục mới .... Trong hộp thoại Thêm mục mới, chọn Visual C# items> Xamarin.Forms > Trang nội dung [không phải trang nội dung [C#], tạo trang chỉ có mã hoặc chế độ xem nội dung, không phải là một trang]. Đặt tên trang, ví dụ, Helloxamlpage:XamlSamples .NET Standard library project, right-click, and select Add > New Item.... In the Add New Item dialog, select Visual C# Items > Xamarin.Forms > Content Page [not Content Page [C#], which creates a code-only page, or Content View, which is not a page]. Give the page a name, for example, HelloXamlPage:

Để thêm các lớp

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
6 dựa trên XAML khác vào dự án của bạn, hãy chọn dự án thư viện tiêu chuẩn XAMLSAMPLES .NET và gọi mục> Mục menu Tệp mới. Ở bên trái của hộp thoại Tệp mới, chọn các biểu mẫu ở bên trái và Forms ContentPage XAML [không phải hình thức ContentPage, tạo trang chỉ có mã hoặc chế độ xem nội dung, không phải là một trang]. Đặt tên trang, ví dụ, Helloxamlpage:XamlSamples .NET Standard library project and invoke the File > New File menu item. At the left of the New File dialog, select Forms at the left, and Forms ContentPage Xaml [not Forms ContentPage, which creates a code-only page, or Content View, which is not a page]. Give the page a name, for example, HelloXamlPage:

Hai tệp được thêm vào dự án, HelloxamlPage.xaml và tệp phía sau HELLOXAMLPAGE.xaml.cs.HelloXamlPage.xaml and the code-behind file HelloXamlPage.xaml.cs.

Đặt nội dung trang

Chỉnh sửa tệp HelloxamlPage.xaml sao cho các thẻ duy nhất là các thẻ cho

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
6 và
public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
5:HelloXamlPage.xaml file so that the only tags are those for
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
6 and
public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
5:


    

    

Các thẻ

public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
5 là một phần của cú pháp duy nhất của XAML. Lúc đầu, chúng có vẻ là XML không hợp lệ, nhưng chúng là hợp pháp. Khoảng thời gian không phải là một nhân vật đặc biệt trong XML.

Các thẻ

public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
5 được gọi là thẻ phần tử thuộc tính.
public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
8 là một thuộc tính của
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
6 và thường được đặt thành một chế độ xem duy nhất hoặc bố cục có chế độ xem con. Thông thường các thuộc tính trở thành thuộc tính trong XAML, nhưng sẽ khó đặt thuộc tính
public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
8 cho một đối tượng phức tạp. Vì lý do đó, thuộc tính được biểu thị dưới dạng phần tử XML bao gồm tên lớp và tên thuộc tính được phân tách bằng một khoảng thời gian. Bây giờ thuộc tính
public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
8 có thể được đặt giữa các thẻ
public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
5, như thế này:


    

        

    

Cũng lưu ý rằng thuộc tính


    
        

        

        
    

3 đã được đặt trên thẻ gốc.

Tại thời điểm này, mối quan hệ giữa các lớp, thuộc tính và XML nên được hiển nhiên: một lớp Xamarin.forms [như

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
6 hoặc
public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
1] xuất hiện trong tệp XAML dưới dạng phần tử XML. Các thuộc tính của lớp đó, bao gồm

    
        

        

        
    

3 trên
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
6 và bảy thuộc tính của ________ 51 thường xuất hiện dưới dạng các thuộc tính XML.

Nhiều phím tắt tồn tại để đặt các giá trị của các thuộc tính này. Một số thuộc tính là các loại dữ liệu cơ bản: ví dụ, các thuộc tính


    
        

        

        
    

3 và
namespace XamlSamples
{
    public partial class XamlPlusCodePage
    {
        public XamlPlusCodePage[]
        {
            InitializeComponent[];
        }

        void OnSliderValueChanged[object sender, ValueChangedEventArgs args]
        {

        }

        void OnButtonClicked[object sender, EventArgs args]
        {

        }
    }
}
0 thuộc loại
namespace XamlSamples
{
    public partial class XamlPlusCodePage
    {
        public XamlPlusCodePage[]
        {
            InitializeComponent[];
        }

        void OnSliderValueChanged[object sender, ValueChangedEventArgs args]
        {

        }

        void OnButtonClicked[object sender, EventArgs args]
        {

        }
    }
}
1,
namespace XamlSamples
{
    public partial class XamlPlusCodePage
    {
        public XamlPlusCodePage[]
        {
            InitializeComponent[];
        }

        void OnSliderValueChanged[object sender, ValueChangedEventArgs args]
        {

        }

        void OnButtonClicked[object sender, EventArgs args]
        {

        }
    }
}
2 thuộc loại
namespace XamlSamples
{
    public partial class XamlPlusCodePage
    {
        public XamlPlusCodePage[]
        {
            InitializeComponent[];
        }

        void OnSliderValueChanged[object sender, ValueChangedEventArgs args]
        {

        }

        void OnButtonClicked[object sender, EventArgs args]
        {

        }
    }
}
3 và
namespace XamlSamples
{
    public partial class XamlPlusCodePage
    {
        public XamlPlusCodePage[]
        {
            InitializeComponent[];
        }

        void OnSliderValueChanged[object sender, ValueChangedEventArgs args]
        {

        }

        void OnButtonClicked[object sender, EventArgs args]
        {

        }
    }
}
4 [theo mặc định là
namespace XamlSamples
{
    public partial class XamlPlusCodePage
    {
        public XamlPlusCodePage[]
        {
            InitializeComponent[];
        }

        void OnSliderValueChanged[object sender, ValueChangedEventArgs args]
        {

        }

        void OnButtonClicked[object sender, EventArgs args]
        {

        }
    }
}
5 và chỉ được đặt ở đây để minh họa] là loại ____.

Thuộc tính

namespace XamlSamples
{
    public partial class XamlPlusCodePage
    {
        public XamlPlusCodePage[]
        {
            InitializeComponent[];
        }

        void OnSliderValueChanged[object sender, ValueChangedEventArgs args]
        {

        }

        void OnButtonClicked[object sender, EventArgs args]
        {

        }
    }
}
7 thuộc loại
namespace XamlSamples
{
    public partial class XamlPlusCodePage
    {
        public XamlPlusCodePage[]
        {
            InitializeComponent[];
        }

        void OnSliderValueChanged[object sender, ValueChangedEventArgs args]
        {

        }

        void OnButtonClicked[object sender, EventArgs args]
        {

        }
    }
}
8, đây là một bảng liệt kê. Đối với một thuộc tính thuộc bất kỳ loại bảng liệt kê nào, tất cả những gì bạn cần cung cấp là tên thành viên.

Tuy nhiên, đối với các thuộc tính của các loại phức tạp hơn, các bộ chuyển đổi được sử dụng để phân tích XAML. Đây là các lớp trong xamarin.forms xuất phát từ

namespace XamlSamples
{
    public partial class XamlPlusCodePage
    {
        public XamlPlusCodePage[]
        {
            InitializeComponent[];
        }

        void OnSliderValueChanged[object sender, ValueChangedEventArgs args]
        {

        }

        void OnButtonClicked[object sender, EventArgs args]
        {

        }
    }
}
9. Nhiều lớp học công cộng nhưng một số thì không. Đối với tệp XAML cụ thể này, một số trong số các lớp này đóng một vai trò đằng sau hậu trường:

  • 
        
            
    
            
    
            
        
    
    
    0 cho thuộc tính
    
        
            
    
            
    
            
        
    
    
    1
  • 
        
            
    
            
    
            
        
    
    
    2 cho tài sản
    
        
            
    
            
    
            
        
    
    
    3
  • 
        
            
    
            
    
            
        
    
    
    4 cho tài sản
    
        
            
    
            
    
            
        
    
    
    5

Các bộ chuyển đổi này chi phối cú pháp cho phép của cài đặt thuộc tính.


    
        

        

        
    

6 có thể xử lý một, hai hoặc bốn số được phân tách bằng dấu phẩy. Nếu một số được cung cấp, nó áp dụng cho cả bốn mặt. Với hai số, số thứ nhất là đệm trái và phải, và số thứ hai là trên và dưới. Bốn số theo thứ tự bên trái, trên, phải và dưới cùng.


    
        

        

        
    

0 có thể chuyển đổi tên của các trường tĩnh công khai của cấu trúc

    
        

        

        
    

8 thành các giá trị của loại

    
        

        

        
    

8.


    
        

        

        
    

2 có thể xử lý một thành viên

1 hoặc kích thước phông chữ số.


    
        

        

        
    

4 chấp nhận tên của các trường tĩnh công khai của cấu trúc

3 hoặc các giá trị RGB thập lục phân, có hoặc không có kênh alpha, trước một dấu hiệu số [#]. Tại đây, cú pháp mà không có kênh alpha:


4

Mỗi chữ cái nhỏ là một chữ số thập lục phân. Đây là cách bao gồm một kênh alpha:


5

Đối với kênh alpha, hãy nhớ rằng FF hoàn toàn mờ đục và 00 hoàn toàn minh bạch.

Hai định dạng khác cho phép bạn chỉ chỉ định một chữ số thập lục phân cho mỗi kênh:


6

7

Trong những trường hợp này, chữ số được lặp lại để tạo thành giá trị. Ví dụ: #CF3 là màu RGB CC-FF-33.

Trang điều hướng trang

Khi bạn chạy chương trình XAMLSAMPLES,


    

    

7 sẽ được hiển thị. Để xem

9 mới, bạn có thể đặt đó là trang khởi động mới trong tệp app.xaml.cs hoặc điều hướng đến trang mới từ

    

    

7.XamlSamples program, the

    

    

7 is displayed. To see the new

9 you can either set that as the new startup page in the App.xaml.cs file, or navigate to the new page from

    

    

7.

Để thực hiện điều hướng, đầu tiên là mã thay đổi trong hàm tạo app.xaml.cs sao cho đối tượng

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
01 được tạo:App.xaml.cs constructor so that a
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
01 object is created:

public App[]
{
    InitializeComponent[];
    MainPage = new NavigationPage[new MainPage[]];
}

Trong Trình xây dựng MainPage.xaml.cs, bạn có thể tạo một

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
02 đơn giản và sử dụng trình xử lý sự kiện để điều hướng đến

9:MainPage.xaml.cs constructor, you can create a simple
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
02 and use the event handler to navigate to

9:

public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}

Đặt thuộc tính

public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
8 của trang thay thế cài đặt của thuộc tính
public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
8 trong tệp XAML. Khi bạn biên dịch và triển khai phiên bản mới của chương trình này, một nút sẽ xuất hiện trên màn hình. Nhấn nó điều hướng đến

9. Tại đây, trang kết quả trên iPhone, Android và UWP:

Bạn có thể điều hướng trở lại


    

    

7 bằng nút { await Navigation.PushAsync[new HelloXamlPage[]]; }; Content = button; } 1. Nếu bạn cần nhúng bất kỳ ký tự Unicode nào vào văn bản, bạn có thể sử dụng cú pháp XML tiêu chuẩn. Ví dụ: để đưa lời chào vào trích dẫn thông minh, sử dụng:

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
09

Ở đây, nó trông như thế nào:

XAML và tương tác mã

Mẫu Helloxamlpage chỉ chứa một

public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
1 trên trang, nhưng điều này rất bất thường. Hầu hết các dẫn xuất
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
6 đặt thuộc tính
public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
8 thành bố cục một số loại, chẳng hạn như
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
13. Thuộc tính
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
14 của
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
13 được xác định là loại
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
16 nhưng nó thực sự là một đối tượng của loại
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
17 và bộ sưu tập đó có thể được điền với nhiều chế độ xem hoặc bố cục khác. Trong XAML, các mối quan hệ cha mẹ và con cái này được thiết lập với hệ thống phân cấp XML bình thường. Tại đây, một tệp XAML cho một trang mới có tên XAMLPLUSCODEPAGE:HelloXamlPage sample contains only a single
public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
1 on the page, but this is very unusual. Most
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
6 derivatives set the
public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
8 property to a layout of some sort, such as a
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
13. The
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
14 property of the
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
13 is defined to be of type
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
16 but it’s actually an object of type
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
17, and that collection can be populated with multiple views or other layouts. In XAML, these parent-child relationships are established with normal XML hierarchy. Here’s a XAML file for a new page named XamlPlusCodePage:


    
        

        

        
    

Tệp XAML này hoàn thành về mặt cú pháp và ở đây, nó trông như thế nào:

Tuy nhiên, bạn có thể coi chương trình này là thiếu chức năng. Có lẽ

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
18 được cho là sẽ khiến
public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
1 hiển thị giá trị hiện tại và
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
02 có lẽ được dự định sẽ làm một cái gì đó trong chương trình.

Như bạn sẽ thấy trong Phần 4. Khái niệm cơ bản liên kết dữ liệu, công việc hiển thị giá trị

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
18 bằng cách sử dụng
public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
1 có thể được xử lý hoàn toàn bằng XAML với liên kết dữ liệu. Nhưng nó rất hữu ích để xem giải pháp mã đầu tiên. Mặc dù vậy, việc xử lý
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
02 Nhấp chắc chắn yêu cầu mã. Điều này có nghĩa là tệp phía sau cho
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
24 phải chứa trình xử lý cho sự kiện
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
25 của sự kiện
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
18 và
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
27 của
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
02. Hãy để thêm chúng:

namespace XamlSamples
{
    public partial class XamlPlusCodePage
    {
        public XamlPlusCodePage[]
        {
            InitializeComponent[];
        }

        void OnSliderValueChanged[object sender, ValueChangedEventArgs args]
        {

        }

        void OnButtonClicked[object sender, EventArgs args]
        {

        }
    }
}

Những người xử lý sự kiện không cần phải công khai.

Quay lại trong tệp XAML, các thẻ

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
18 và
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
02 cần bao gồm các thuộc tính cho các sự kiện
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
25 và
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
27 tham chiếu các trình xử lý này:


    
        

        

        
    

Lưu ý rằng việc gán một trình xử lý cho một sự kiện có cùng cú pháp như gán giá trị cho một thuộc tính.

Nếu trình xử lý cho sự kiện

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
25 của
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
18 sẽ sử dụng
public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
1 để hiển thị giá trị hiện tại, trình xử lý cần tham chiếu đối tượng đó từ mã.
public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
1 cần một tên, được chỉ định với thuộc tính
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
37.


Tiền tố

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
9 của thuộc tính
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
37 chỉ ra rằng thuộc tính này là nội tại của XAML.

Tên bạn gán cho thuộc tính

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
37 có cùng các quy tắc với tên biến C#. Ví dụ, nó phải bắt đầu bằng một chữ cái hoặc dấu gạch dưới và không chứa khoảng trống nào.

Bây giờ trình xử lý sự kiện

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
25 có thể đặt
public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
1 để hiển thị giá trị
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
18 mới. Giá trị mới có sẵn từ các đối số sự kiện:

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
0

Hoặc, người xử lý có thể có được đối tượng

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
18 đang tạo sự kiện này từ đối số
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
45 và lấy thuộc tính
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
46 từ đó:

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
1

Khi bạn lần đầu tiên chạy chương trình,

public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
1 không hiển thị giá trị
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
18 vì sự kiện
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
25 vẫn chưa bị bắn. Nhưng bất kỳ thao tác nào của
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
18 đều gây ra giá trị được hiển thị:

Bây giờ cho

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
02. Hãy để mô phỏng một phản hồi cho sự kiện
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
27 bằng cách hiển thị cảnh báo với
namespace XamlSamples
{
    public partial class XamlPlusCodePage
    {
        public XamlPlusCodePage[]
        {
            InitializeComponent[];
        }

        void OnSliderValueChanged[object sender, ValueChangedEventArgs args]
        {

        }

        void OnButtonClicked[object sender, EventArgs args]
        {

        }
    }
}
0 của nút. Trình xử lý sự kiện có thể sử dụng đối số
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
45 một cách an toàn cho
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
02 và sau đó truy cập các thuộc tính của nó:

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
2

Phương pháp này được định nghĩa là

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
56 vì phương pháp
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
57 không đồng bộ và nên được mở đầu với toán tử
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
58, trả về khi phương thức hoàn thành. Bởi vì phương pháp này có được
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
02 bắn sự kiện từ đối số
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
45, cùng một trình xử lý có thể được sử dụng cho nhiều nút.

Bạn đã thấy rằng một đối tượng được xác định trong XAML có thể bắn một sự kiện được xử lý trong tệp mã phía sau và tệp phía sau có thể truy cập một đối tượng được xác định trong XAML bằng cách sử dụng tên được gán cho nó với thuộc tính

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
37. Đây là hai cách cơ bản mà mã và XAML tương tác.

Một số hiểu biết bổ sung về cách các tác phẩm XAML có thể được lượm lặt bằng cách kiểm tra tệp XamLpluscode.xaml.cs mới được tạo, hiện bao gồm bất kỳ tên nào được gán cho bất kỳ thuộc tính

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
37 nào dưới dạng trường riêng. Đây là phiên bản đơn giản của tệp đó:XamlPlusCode.xaml.g.cs file, which now includes any name assigned to any
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
37 attribute as a private field. Here's a simplified version of that file:

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
3

Tuyên bố của trường này cho phép biến được sử dụng tự do ở bất cứ đâu trong tệp lớp một phần

using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
24 theo thẩm quyền của bạn. Trong thời gian chạy, trường được chỉ định sau khi XAML đã được phân tích cú pháp. Điều này có nghĩa là trường
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
64 là
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
65 khi hàm tạo
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
24 bắt đầu nhưng hợp lệ sau khi

    

        

    

9 được gọi.

Sau khi


    

        

    

9 trả về kiểm soát trở lại hàm tạo, hình ảnh của trang đã được xây dựng giống như chúng đã được khởi tạo và khởi tạo trong mã. Tệp XAML không còn đóng bất kỳ vai trò nào trong lớp. Bạn có thể thao tác các đối tượng này trên trang theo bất kỳ cách nào bạn muốn, ví dụ, bằng cách thêm các chế độ xem vào
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
13 hoặc đặt thuộc tính
public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
8 của trang hoàn toàn khác. Bạn có thể đi bộ trên cây bằng cách kiểm tra thuộc tính
public MainPage[]
{
    InitializeComponent[];

    Button button = new Button
    {
        Text = "Navigate!",
        HorizontalOptions = LayoutOptions.Center,
        VerticalOptions = LayoutOptions.Center
    };

    button.Clicked += async [sender, args] =>
    {
        await Navigation.PushAsync[new HelloXamlPage[]];
    };

    Content = button;
}
8 của trang và các mục trong bộ sưu tập bố cục
using Xamarin.Forms;

namespace XamlSamples
{
    public partial class MainPage : ContentPage
    {
        public MainPage[]
        {
            InitializeComponent[];
        }
    }
}
14. Bạn có thể đặt các thuộc tính trên các chế độ xem được truy cập theo cách này hoặc gán trình xử lý sự kiện cho chúng một cách linh hoạt.

Đừng ngại. Nó có trang của bạn và XAML chỉ là một công cụ để xây dựng nội dung của nó.

Bản tóm tắt

Với phần giới thiệu này, bạn đã thấy cách tệp XAML và tệp mã đóng góp vào định nghĩa lớp và cách các tệp XAML và mã tương tác. Nhưng XAML cũng có các tính năng cú pháp độc đáo của riêng mình cho phép nó được sử dụng một cách rất linh hoạt. Bạn có thể bắt đầu khám phá những điều này trong Phần 2. Cú pháp XAML cần thiết.

  • Xamlsamples
  • Phần 2. Cú pháp XAML cần thiết
  • Phần 3. Tiện ích mở rộng đánh dấu XAML
  • Phần 4. Khái niệm cơ bản ràng buộc dữ liệu
  • Phần 5. Từ liên kết dữ liệu đến MVVM

Nhận xét

Gửi và xem phản hồi cho

Bài Viết Liên Quan

Chủ Đề