私は間違ってやっていることを理解しようとするのにこれに時間を費やしてきました。私はPrismにもかなり新しいです。私は他の人々の束縛の例を見てきましたが、どれもうまくいかないようです。それ以来、私は "Text ="の中にバインドして、テキストがクリアされた別のテキストボックスをクリックしています。私はTwoWay Mode、UpdatePropertyChangeなどを試しました。何も動作していないようです。私は値が本当にcsコードと一致するかどうかを確認するためにブレークポイントを入れました。しかし、それは縛らない。私は間違って何をしていますか?私は自分のテキストボックスを自分のビューモデル「UserName」の文字列値と同じにして、誰かがログインボタンをクリックしたときにその値がデータベースに存在するかどうかをチェックします。ここで問題バインディングWpfToolKitウォーターマークのテキストボックスプリズムを使用
はLogin.xamlは次のとおりです。
<Grid x:Name="UserInputGrid"
Margin="15"
Height="100">
<wpfTool:WatermarkTextBox x:Name="UsernameTextBox"
Width="600"
Height="100"
Text="{Binding UserName}"
Watermark="Username"
Cursor="IBeam"
FontFamily="Quicksand"
FontSize="72"/>
</Grid>
LoginView.xaml.cs
public LoginView()
{
InitializeComponent();
DataContext = new LoginViewModel();
}
}
LoginViewModel.cs:
public class LoginViewModel : BindableBase
{
#region Private Variables
//Private Variables
bool isCanLogin = true;
private string _username;
private string _password;
#endregion
#region Public Variables
//Public Variables
public string UserName
{
get { return _username; }
set { RaisePropertyChanged("UserName"); }
}
public string Password
{
get { return _password; }
set { RaisePropertyChanged("Password"); }
}
public bool CanLogin() { return isCanLogin; }
#endregion
#region Commands
//Commands
RelayCommand _loginCommand;
public ICommand LoginCommand
{
get
{
if (_loginCommand == null)
_loginCommand = new RelayCommand(Login, CanLogin);
return _loginCommand;
}
}
#endregion
#region Functions and Methods
//Functions and Methods
private void Login()
{
try
{
isCanLogin = false;
SoundPlayers.ButtonSound();
//Authentication and Checks the DB to see if the User exists
if (AuthenticationService.VerifyUser(UserName, Password))
{
//Navigate to landing page
SoundPlayers.LoginSound();
}
else
{
//Doesn't exist!?!
}
isCanLogin = true;
}
catch
{
//If Login requirements aren't met, or failed
}
finally
{
isCanLogin = true;
}
}
#endregion
}
* "私はそれを"テキスト= "の中にバインドし、別のテキストボックスをクリックすると私のテキストはクリアされます。" * - あなたはあなたが 'UsernameTextBox'にテキストを入力すると言っていますか?フォーカスが失われると、ボックスに入力したテキストは破棄されますか? –
はい、唯一の方法は、私がMode = OneWayなら、私は別の例を見ており、twowayはそうです。しかし、私が何かをするとき、カーソルを値UserNameに置いて、テキストボックスに入力した値があるかどうかを確認すると、 "Null"と表示されます。 (これは私がブレークポイントを置くときです) – Hypergyzed