我開始一個新的項目,和id喜歡使用MVVM - 我真的很喜歡這種模式,我一直在我所有的Windows Phone 8.1應用程序中使用它。但轉移到xamarin是一個叢林!我通常使用mvvm light,並且每次創建一個新項目時都會使用一個很好的基本實現 - 但我無法找到一個非常好的示例,顯示我需要的內容。 我想要做的是製作一個Xamarin共享(或便攜)項目,它跨所有平臺共享視圖。我想編寫使用代碼隱藏創建視圖 - 所以沒有XAML。 有沒有人有這方面的經驗,並可以指向我一個很好的示例? 我也想知道是否需要使用第三方框架,因爲導航似乎很容易。視覺工作室xamarin形式mvvm
回答
有很多樣品可以找到。我最喜歡的網站Xamarin.Forms樣本是Xamarin Forms in Anger。
讓我們來看看Jobbberr sample:
using System;
using Xamarin.Forms;
namespace InAnger.Jobbberr
{
public class SettingsPage : ContentPage
{
public SettingsPage()
{
Style = AppStyle.SettingsPageStyle;
var pageTitle = new Frame() {
Style = AppStyle.PageTitleLabelFrameStyle,
Padding = new Thickness(0,Device.OnPlatform(15,0,0),0,10),
Content = new Label {
Style = AppStyle.PageTitleLabelStyle,
Text = "Settings",
}
};
var signoutButton = new Button() {
VerticalOptions = LayoutOptions.EndAndExpand,
HorizontalOptions = LayoutOptions.Center,
Text = "Sign Out",
TextColor = AppStyle.DarkLabelColor,
};
Content = new StackLayout {
VerticalOptions = LayoutOptions.FillAndExpand,
Padding = new Thickness (20),
Children = {
pageTitle,
new BoxView() {
HeightRequest = 1,
BackgroundColor = AppStyle.DarkLabelColor,
},
new SettingsUserView(),
new SyncView(),
new SettingsSwitchView ("GPS"),
new SettingsSwitchView ("Jobs Alert"),
signoutButton,
new StatusBarView()
}
};
}
}
}
你看到了什麼嗎?
新類SettingsPage
派生自ContentPage
。控件pageTitle
和signoutButton
在其構造函數中創建。最後,您會看到如何創建StackLayout
,並將其填入控件並設置爲頁面內容。這就是如何在代碼中創建Page
。
如何申請MVVM?
構造函數的第一行設置
BindingContext = ViewModel
(創建一個新的視圖模型或通過ViewModelLocator
或任何通過找到它)。比方說,比如你想的
signoutButton
向視圖模型的屬性SignOutButtonText
和SignoutCommand
的Text
和Command
屬性綁定。你會改變這個創建按鈕:var signoutButton = new Button() { VerticalOptions = LayoutOptions.EndAndExpand, HorizontalOptions = LayoutOptions.Center, TextColor = AppStyle.DarkLabelColor, }; signoutButton.SetBinding(Button.TextProperty, "SignOutButtonText"); signoutButton.SetBinding(Button.CommandProperty, "SignoutCommand");
感謝您的回答。我並沒有意識到憤怒中的形式:)一直在研究它,並嘗試一些東西 - 這非常好。我的問題是沒有製作一個簡單的MVVM應用程序,但是當涉及瀏覽 - 並在視圖模型之間傳遞參數時 - 它變得複雜。我現在的解決方案是將參數傳遞給視圖,然後在viewmodel上執行我需要的操作,添加數據等等,但是我有點感覺我打破了這裏的模式 - 因爲存在更高的耦合度。通常我會讓視圖實現viewmodels構造函數的導航接口。 – OneBigQuestion
- 1. xamarin未在視覺工作室2013
- 2. 視覺工作室Xamarin錯誤
- 3. 視覺工作室
- 4. 視覺工作室
- 5. XAML之間的Toggel視覺工作室中的代碼與Xamarin形式
- 6. 視覺工作室 - Xamarin形式,增量apk,應用程序版本
- 7. mvvm-light工具包崩潰的視覺工作室
- 8. 視覺工作室asp.net標記格式
- 9. 阻止彈出式視覺工作室
- 10. Xamarin xaml設計視圖不在視覺工作室中顯示
- 11. 在視覺工作室2012
- 12. 沒有視覺工作室
- 13. XML xpath視覺工作室
- 14. 使視覺工作室在'='
- 15. 擴展視覺工作室
- 16. PHPMyAdmin視覺工作室c#
- 17. 綠色視覺工作室?
- 18. 微軟視覺工作室基本形式
- 19. 視覺工作室 - TabControl.TabPages.Insert不工作
- 20. ReSharper困惑我的視覺工作室 - 重置視覺工作室與默認
- 21. ZXing條碼掃描器NamaReferenceException與Xamarin(視覺工作室)
- 22. Xamarin設計師例外視覺工作室2015 for Android
- 23. 關於Xamarin與視覺工作室的開發
- 24. NuGet包在視覺工作室2015和Xamarin導致麻煩
- 25. 如何將xamarin與視覺工作室連接?
- 26. 視覺工作室2015 Xamarin項目找不到模擬器
- 27. Android的Xamarin視覺工作室錯誤:'System.Configuration.dll'
- 28. 視覺工作室設計視圖
- 29. 遊戲製作工作室視覺bug
- 30. 視覺工作室設計師視圖無法獲得正確的形式
你爲什麼要這麼做? XAML的主要優點是快速簡單的UI設計和簡單的綁定 – Tseng
我不喜歡XAML。我更喜歡儘可能使用一種語言。恕我直言,長期維護更容易。 – Wosi