【发布时间】:2017-05-05 18:59:22
【问题描述】:
我真的不知道我是不是白痴,我要做的就是这么简单!
我有一个带有公共用户名字段的 ViewModel。
最初我试图让条目显示一个初始值,但在进一步查看后我发现我什至无法让视图更新视图模型。
我希望文本在我单击按钮时反映输入的用户名并将其显示在警报中。
我的视图模型:
public class LoginViewModel
{
public String Username { get; set; }
public String Password { get; set; }
public int UserId { get; set; }
}
我的页面:
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage Padding="15,15,15,15"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
x:Class="EngineerApp.LoginPage">
<AbsoluteLayout>
<StackLayout VerticalOptions="EndAndExpand" Orientation="Vertical">
<Image Source="traklogo.png" VerticalOptions="FillAndExpand"></Image>
<Label TextColor="#207cad" Text="Username" />
<Label Text="{Binding Username}"></Label>
<Entry Text="{Binding Username, Mode=TwoWay}" TextColor="Black" Placeholder="Please enter your username..." x:Name="txtUsername" />
</StackLayout>
</AbsoluteLayout>
</ContentPage>
我的页面代码:
public partial class LoginPage : ContentPage
{
public LoginViewModel viewModel = new LoginViewModel();
public LoginPage()
{
InitializeComponent();
BindingContext = viewModel;
btnLogIn.Clicked += delegate
{
DisplayAlert("Test",viewModel.Username,"Okay");
return;
};
}
}
【问题讨论】:
-
INotifyPropertyChanged的实现在哪里?通常OnPropertyChanged会在 setter 中被调用。 -
您好,很抱歉我实际上删除了它,因为我认为它不是必需的。相应更新。
-
Label上的绑定就在Entry之前,暗示您确实需要它。数据绑定需要INotifyPropertyChanged来驱动魔法。
标签: c# xaml xamarin data-binding