我开始一个新的项目,和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