作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试像这样实现登录系统:
public Command LoginCommand => new Command(async () =>
{
LoginModel model = new LoginModel("dnetTest", "dnetTest"); // (get value from entry instead of "dnetTest")
if (model.CheckInformation())
{
bool isSuccess = await LoginService.Login(model);
if (isSuccess)
{
await Application.Current.MainPage.DisplayAlert("Пријављивање", "Успешно сте се пријавили", "OK.");
Application.Current.MainPage = new MainPage();
}
}
<Label Text="Korisničko ime"/>
<Entry x:Name="Entry_Username" Placeholder="Korisničko ime"/>
<Label Text="Lozinka"/>
<Entry x:Name="Entry_Password" Placeholder="Lozinka"/>
<Button Text="Prijavi se" Command="{Binding LoginCommand}"/>
最佳答案
公平起见;这是一个很容易找到的非常基本的 MVVM 问题,其解决方案在多个博客和页面中。但是,让我帮你开始吧。
And is there any way to bind it without using x:Names?
x:Name
引用,您不仅要触摸您的 UI,还要触摸 View 模型,并浏览对这些字段的所有引用并替换它们。
LoginCommand
现在生活在自己的 View 模型中。您已经在那里使用数据绑定(bind),这很好。我不直接明白为什么您需要一个单独的模型来用于 View 模型和登录,可能是您的
LoginModel
更像是一种服务。另外,我假设您在没有 MVVM 框架的帮助下手动执行此操作。很高兴知道引擎盖下发生了什么,但我建议使用 MVVM 框架,例如 FreshMvvm 或 Prism。
LoginPage.xaml
应该有
LoginPage.xaml.cs
代码隐藏文件。在那里,进入构造函数并指定这一行:
public LoginPage()
{
InitializeComponents();
// This line is relevant here
BindingContext = new LoginViewModel();
}
LoginCommand
已经在使用数据绑定(bind),这可能已经在这里了。
LoginPage.xaml
,将您的 XAML 更改为:
<Label Text="Korisničko ime"/>
<Entry Text="{Binding Username}" Placeholder="Korisničko ime"/>
<Label Text="Lozinka"/>
<Entry Text="{Binding Password}" Placeholder="Lozinka"/>
<Button Text="Prijavi se" Command="{Binding LoginCommand}"/>
x:Name
属性并添加了
Text
两个
Entry
上的属性控制。
LoginViewModel.cs
并添加两个属性,如下所示:
public string Username { get; set; }
public string Password { get; set; }
Entry
中的文本发生变化时控件,这些属性应包含相应的值。现在,您可以将发布的代码更改为以下内容:
public Command LoginCommand => new Command(async () =>
{
// Notice how I changed this line
LoginModel model = new LoginModel(Username, Password);
if (model.CheckInformation())
{
bool isSuccess = await LoginService.Login(model);
if (isSuccess)
{
await Application.Current.MainPage.DisplayAlert("Пријављивање", "Успешно сте се пријавили", "OK.");
Application.Current.MainPage = new MainPage();
}
}
关于xaml - 如何将页面中的条目与 ViewModel 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55414973/
我是一名优秀的程序员,十分优秀!