2017-10-20 49 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

相關問題