2017-10-20 36 views
3

J'apprends moi-même du développement de Xamarin. Quand j'étudie des exemples de projets Xamarin, like this one, je vois parfois qu'une page a un fichier mystérieux avec le même nom que le fichier xaml et son fichier code-behind, mais se terminant par *CS.cs comme vous pouvez le voir avec le LoginPage dans le projet lié ci-dessus:Quel est le but des fichiers se terminant par * CS.cs dans les projets Xamarin Forms?

  • LoginPage.xaml
  • LoginPage.xaml.cs
  • LoginPageCS.cs < --- Qu'est-ce que cela?

LoginPage.xaml est bien sûr la description xaml de la mise en page et LoginPage.xaml.cs est le code-behind. Mais qu'est-ce que LoginPageCS.cs? Je peux l'enlever du projet et réexécuter la solution avec la même fonctionnalité qu'avant. Alors, quel est le but avec les fichiers se terminant par *CS.cs? J'ai vu plusieurs exemples de projets où il y a *CS.cs fichiers.

+0

La marge est juste une façon visuelle de dire que la page est créée via le code C# et pas Xaml. – SushiHangover

+0

XAML est convivial pour un concepteur d'interface utilisateur et est entré pour un * générateur de code *. Vous ne pouvez normalement pas voir le code qu'il génère et ce code n'est pas très joli. Donc, comme alternative, ils fournissent également le fichier fooCS.cs qui fait exactement la même chose que les fichiers foo.xaml et foo.xaml.cs. Mais dans une autre classe nommée fooCS. Cette classe n'est pas réellement utilisée dans le projet. Au-delà de l'utilisation démonstrative, cela pourrait inspirer un programmeur à écrire du code au lieu de xaml. –

Répondre

3

En regardant le code, LoginPageCS.cs semble être en grande partie identique à LoginPage.xaml - ce serait donc un moyen de créer les contrôles de page en C# par opposition à XAML. Voir this question pour une discussion sur la différence.

Notez les similitudes

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

Oh ok! Ainsi, le projet exemple fournit simplement deux façons de faire la conception - un en utilisant XAML et l'autre en utilisant le code? :-) – Rox

+0

Il semblerait que oui – dannymc18