Donc, j'ai passé trop de temps à essayer de comprendre ce que je fais de mal. Je suis assez nouveau à Prism aussi. J'ai regardé des exemples contraignants d'autres peuples, mais aucun d'entre eux ne semble fonctionner. Ce qui ne fait pas depuis pour moi est ce que je lie dans le "Text =" et va cliquer sur une autre zone de texte que mon texte efface. J'ai essayé TwoWay Mode, UpdatePropertyChange, etc. Rien ne semble fonctionner. J'ai même mis des points de rupture pour voir si la valeur correspond bien au code cs. Mais non, ça ne lie pas. Qu'est-ce que je fais mal? Je veux juste que ma zone de texte égalise ma valeur de chaîne "UserName" de viewmodels afin que quelqu'un clique sur le bouton de connexion, il vérifie les valeurs pour voir si elles existent dans une base de données.Liaison de problème WpfToolKit Filigrane Textbox utilisant Prism
Voici 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
}
* "Ce qui ne me fait pas, c'est ce que je lie dans le" Text = "et je clique sur une autre zone de texte que mon texte efface." * - Dites-vous que vous tapez du texte dans 'UsernameTextBox' , puis quand il perd le focus, il rejette le texte que vous avez tapé dans la boîte? –
Oui, la seule façon de rester est si je fais Mode = OneWay, je regarde un autre exemple, et ils font deux fois. Mais tout ce que je fais, quand je mets mon curseur sur la valeur UserName pour voir si elle a la valeur que j'ai tapé dans la zone de texte, il dit "Null". (C'est quand j'ai mis un point de rupture.) – Hypergyzed