- ユーザー名とパスワードのボックスがあります。
- その下にボタンがあります。
- そのボタンをクリックすると、ユーザー名とパスワードのボックスに入力された内容を分析したいと思います。
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 宣言にブレーク ポイントを設定しました。どちらも空です。誰かが入力しているとき、またはボタンが押されたとき、またはそれが機能したときにこれらが更新されるようにするにはどうすればよいですか???
私は現在、mvvm を学習し、単純なクリック イベントとバインドを機能させるために約 4 週間を費やしました。これは単に意味がありません..。助けてくれてありがとう!
PS - MVVM ライトは新規参入者にとって混乱しすぎますか? ドキュメントはとても..詳細に光っています。例はありません:(