想象一下,我有一个用户名和密码文本框以及一个提交登录详细信息的按钮。
我有一堂课:
public class LoginCredentials
{
public string Username { get; set; }
public string Password { get; set; }
}
我有一个视图模型:
public class MainViewModel : INotifyPropertyChanged
{
public LoginCredentials LoginCredentials { get; set; }
public MainViewModel( LoginCredentials loginCredentials )
{
// Implement loading from saved credentials if done so
this.LoginCredentials = new LoginCredentials();
}
#region Properties
public string Username {
get { return LoginCredentials.Username; }
set { LoginCredentials.Username = value; }
}
public string Password
{
get { return LoginCredentials.Password; }
set { LoginCredentials.Password = value; }
}
#endregion
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
我有一些 xaml 与此视图模型的数据绑定:
...DataContext="{Binding MainViewModel}"...
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0">
<TextBlock HorizontalAlignment="Left" Margin="10,0,0,0" TextWrapping="Wrap" Text="Username" VerticalAlignment="Top"/>
<TextBox HorizontalAlignment="Left" Height="72" Margin="0,27,0,0" TextWrapping="Wrap" Text="{Binding Username, Mode=TwoWay}" VerticalAlignment="Top" Width="456"/>
<TextBlock HorizontalAlignment="Left" Margin="10,99,0,0" TextWrapping="Wrap" Text="Password" VerticalAlignment="Top"/>
<PasswordBox HorizontalAlignment="Left" Height="72" Margin="0,126,0,0" Password="{Binding Password, Mode=TwoWay}" VerticalAlignment="Top" Width="456"/>
<Button Content="Log in" HorizontalAlignment="Center" Margin="167,203,169,0" VerticalAlignment="Top" />
</Grid>
最后,我为 xaml 编写的代码:
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
base.DataContext = new MainViewModel();
}
}
我在哪里放置更新我在我的视图模型中声明的 LoginCredentials 的点击事件,然后我将其提交给我的 DomainModel(在这种情况下是一个服务层)。
如果我在视图模型中添加一个绑定到函数的单击事件,我无法知道用户名和密码的文本框字段是什么,因为视图模型无法访问 Username.text 类型的方法。
我是否在按钮后面的代码中添加了一些 notifypropertychanged?耶尔普。PS这是我的第一个Windows手机应用程序。