Если ваш пользовательский класс реализует интерфейс INotifyPropertyChanged
и вызывает обработчик OnPropertyChanged
в свойстве set
, он уведомит пользовательский интерфейс, обычно связывающий клиентов, об изменении значения свойства.
Итак, ваша проблема на самом деле в том, как вы меняете значение свойства, но я не видел, где вы меняете значение Errormessage
в приведенном выше коде.
Я сделал простой пример кода для вашей справки в соответствии с вашим кодом.
<StackPanel>
<TextBox Text="{Binding Password,Mode=TwoWay}"></TextBox>
<TextBlock Text="{Binding Path=Errormessage,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Margin="250,25,0,0" FontSize="24" FontFamily="Segoe Pro" Foreground="Red"/>
</StackPanel>
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
var vm = new LoginPasswordViewModel();
this.DataContext = vm;
}
}
public class LoginPasswordViewModel : MainViewBaseModel
{
private string password;
private string errorMessage = "We need this info to countinue";
public LoginPasswordViewModel()
{
}
public string Password
{
get { return password; }
set
{
password = value;
if (string.IsNullOrEmpty(Password.Trim()))
{
Errormessage = "Password cannot be null or empty!";
}
else
{
Errormessage = string.Empty;
}
OnPropertyChanged("Password");
}
}
public string Errormessage
{
get
{
return errorMessage;
}
set
{
errorMessage = value;
OnPropertyChanged("Errormessage");
}
}
}
public class MainViewBaseModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
var eventHandler = this.PropertyChanged;
if (eventHandler != null)
eventHandler(this, new PropertyChangedEventArgs(propertyName));
}
}