- 我有一个用户名和密码框。
- 在它下面我有一个按钮。
- 当我单击该按钮时,我想分析已放入用户名和密码框中的内容。
如何使用 mvvm light 做到这一点?
这就是我所在的位置:
XAML
...DataContext="{Binding Main, Source={StaticResource Locator}}">...
<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}" 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}" VerticalAlignment="Top" Width="456"/>
<Button Content="Log in" HorizontalAlignment="Center" Margin="167,203,169,0" VerticalAlignment="Top" Command="{Binding LogInCommand}"/>
</Grid>
查看模型
public class MainViewModel : ViewModelBase
{
public LoginCredentials LoginCredentials { get; set; }
public ICommand LogInCommand { get; private set; }
public MainViewModel()
{
LoginCredentials = new LoginCredentials();
LogInCommand = new RelayCommand(this.OnLogInCommand);
}
private void OnLogInCommand()
{
string testUsername = Username;
string testPassword = Password;
}
#region Properties
public string Username
{
get { return LoginCredentials.Username; }
set { LoginCredentials.Password = value; }
}
public string Password
{
get { return LoginCredentials.Password; }
set { LoginCredentials.Password = value; }
}
#endregion
}
MainPage.xaml.cs
public partial class MainPage : PhoneApplicationPage
{
public MainPage()
{
InitializeComponent();
}
}
目前正在发生的事情:
- 当我单击我的按钮时,LogInCommand运行并触发我的方法OnLoginCommand。我在 testUsername 声明上放了一个断点,以查看单击按钮时,用户名和密码是否反映了输入的内容;他们都是空的。我必须怎么做才能确保在有人打字或按下按钮时更新这些内容,或者它可以工作???
我现在花了大约 4 周的时间学习 mvvm 并尝试让一个简单的点击事件和绑定工作。这根本没有意义...... doh。谢谢你的帮助!
PS - MVVM light 对新手来说太混乱了吗?文档是如此..细节很简单。没有例子:(