2017-10-20 47 views
3

我正在学习一些Xamarin开发。当我研究Xamarin项目的例子,like this one时,我有时会看到一个页面有一个与xaml文件及其代码隐藏文件同名的神秘文件,但以*CS.cs结尾,因为您可以看到LoginPage上面的链接项目:Xamarin Forms项目中以* CS.cs结尾的文件的用途是什么?

  • LoginPage.xaml
  • LoginPage.xaml.cs
  • LoginPageCS.cs < ---这是什么?

LoginPage.xaml是当然的布局的XAML描述和LoginPage.xaml.cs是代码隐藏。但是LoginPageCS.cs是什么?我可以从项目中删除它,并重新运行与以前相同功能的解决方案。那么以*CS.cs结尾的文件的目的是什么?我看到几个示例项目,其中有*CS.cs文件。

+0

保证金只是一种直观的方式告诉页面通过C#代码中创建和不是Xaml。 – SushiHangover

+0

XAML对UI设计师很友善,并且是*代码生成器*的输入。您通常无法看到它生成的代码,并且代码不太漂亮。所以作为替代方案,他们还提供了fooCS.cs文件,它与foo.xaml和foo.xaml.cs文件完全相同。但在另一个名为fooCS的类中。该类实际上并未在项目中使用。除了示范使用之外,它可能会激发程序员编写代码而不是xaml。 –

回答

3

查看代码,LoginPageCS.cs看起来与LoginPage.xaml基本相同 - 所以这将是一种在C#中创建页面控件的方式,而不是XAML。有关差异的讨论,请参阅this question

注意的相似

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> 

LoginPageCS.cs:

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 
     } 
    }; 
} 
+0

噢!所以示例项目只提供了两种如何进行设计的方法 - 一种是使用XAML,另一种使用代码? :-) – Rox

+0

它会出现如此 – dannymc18

相关问题