C# Xamarin Forms项目中以*CS.CS结尾的文件的用途是什么?
我正在学习一些Xamarin的开发。当我研究Xamarin项目的示例时,我有时会看到一个页面有一个神秘的文件,该文件与xaml文件及其代码隐藏文件同名,但以C# Xamarin Forms项目中以*CS.CS结尾的文件的用途是什么?,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,我正在学习一些Xamarin的开发。当我研究Xamarin项目的示例时,我有时会看到一个页面有一个神秘的文件,该文件与xaml文件及其代码隐藏文件同名,但以*CS.CS结尾,正如您可以看到的,上面链接的项目中的LoginPage就是这样: LoginPage.xaml LoginPage.xaml.cs LoginPageCS.cs查看代码,LoginPageCS.cs似乎与LoginPage.xaml基本相同-因此,这是一种在C#中创建页面控件的方法,而不是xaml。有关差异的讨论,请参见
*CS.CS
结尾,正如您可以看到的,上面链接的项目中的LoginPage就是这样:
- LoginPage.xaml
- LoginPage.xaml.cs
- LoginPageCS.cs查看代码,LoginPageCS.cs似乎与LoginPage.xaml基本相同-因此,这是一种在C#中创建页面控件的方法,而不是xaml。有关差异的讨论,请参见
注意相似之处
LoginPage.xaml:
<?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="LoginNavigation.LoginPage" Title="Login"> <ContentPage.ToolbarItems> <ToolbarItem Text="Sign Up" Clicked="OnSignUpButtonClicked" /> </ContentPage.ToolbarItems> <ContentPage.Content> <StackLayout VerticalOptions="StartAndExpand"> <Label Text="Username" /> <Entry x:Name="usernameEntry" Placeholder="username" /> <Label Text="Password" /> <Entry x:Name="passwordEntry" IsPassword="true" /> <Button Text="Login" Clicked="OnLoginButtonClicked" /> <Label x:Name="messageLabel" /> </StackLayout> </ContentPage.Content> </ContentPage>
页边距只是一种直观的方式,表明页面是通过C#代码创建的,而不是Xaml。Xaml对UI设计器很友好,是代码生成器的输入。您通常看不到它生成的代码,而且代码也不是很漂亮。因此,作为替代方案,它们还提供fooCS.cs文件,该文件的功能与foo.xaml和foo.xaml.cs文件完全相同。但是在另一个名为fooCS的类中。该类实际上没有在项目中使用。除了演示用途之外,它还可能激励程序员编写代码而不是xaml。哦,好吧!因此,示例项目只提供了两种方法来进行设计—一种是使用XAML,另一种是使用代码?:-)看来是这样public LoginPageCS () { var toolbarItem = new ToolbarItem { Text = "Sign Up" }; toolbarItem.Clicked += OnSignUpButtonClicked; ToolbarItems.Add (toolbarItem); messageLabel = new Label (); usernameEntry = new Entry { Placeholder = "username" }; passwordEntry = new Entry { IsPassword = true }; var loginButton = new Button { Text = "Login" }; loginButton.Clicked += OnLoginButtonClicked; Title = "Login"; Content = new StackLayout { VerticalOptions = LayoutOptions.StartAndExpand, Children = { new Label { Text = "Username" }, usernameEntry, new Label { Text = "Password" }, passwordEntry, loginButton, messageLabel } }; }