그래서, 내가 잘못하고있는 것을 알아 내려고 노력하면서 너무 많은 시간을 보냈습니다. 나는 프리즘 (Prism)에 대해서도 상당히 익숙하다. 나는 다른 사람들을 묶는 예를 보았지만 그들 중 누구도 일하는 것처럼 보이지 않는다. 나에게있어서 "텍스트 ="안에 바인딩하고 내 텍스트가 지워지는 다른 텍스트 상자를 클릭하는 것입니다. TwoWay Mode, UpdatePropertyChange 등을 시도해 보았습니다. 아무 것도 작동하지 않는 것 같습니다. 심지어 값이 CS 코드와 실제로 일치하는지 확인하기 위해 중단 점을 넣었습니다. 그러나 아니, 그것은 구속력이 없습니다. 내가 도대체 뭘 잘못하고있는 겁니까? 나는 텍스트 박스가 내 ViewModels "UserName"문자열 값과 같아서 로그인 버튼을 클릭했을 때 값을 검사하여 데이터베이스에 있는지 확인합니다.트러블 바인딩 WpfToolKit 워터 마크 텍스트 박스 프리즘 사용
<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