На моей странице входа есть метка, при неудачной аутентификации я покажу сообщение об ошибке. Когда я рисую его, я установил значение «Видимость» равным false. После проверки подлинности я хочу вернуться к ContentPage и установить ярлык на видимый. Он просто ничего не делать, я попытался установить BindingMode перечисление в TwoWay но позволяет ему сразу, а потом я не могу выключить егоXamarin forms binding Label IsVisibleProperty
в LoginPage
Label errorMessage = new Label { IsVisible = false, Text = "Invalid credentials please try again", TextColor = Color.Red };
errorMessage.SetBinding(IsVisibleProperty, LoginViewModel.ErrorMessagePropertyName);
На странице ViewModel
public const string ErrorMessagePropertyName = "DisplayError";
private bool _displayError = false;
private bool DisplayError
{
get { return _displayError; }
set
{
if (value.Equals(_displayError)) return;
_displayError = value;
OnPropertyChanged();
}
}
Моя кнопка связана с этим в том же вид модели класса, как указано выше, если он doens't пройти простую аутентификацию он пытается установить свойство DisplayError
protected async Task ExecuteLoginCommand()
{
string eventMessage= string.Format("Authenticating User:{0} on {1}", UserName, DateTime.UtcNow);
Logger.LogEvent(eventMessage);
if(UserName == "g" && Password.Length > 2)
{
Application.Current.Properties.Add(Constants.KEY_IS_AUTHENTICATED, true);
await _navigation.PopAsync();
}
else
{
DisplayError = true;
string message = string.Format("Invalid user tried to log into device at this time {0}",DateTime.Now);
Logger.LogEvent(message);
}
Debug.WriteLine(UserName);
Debug.WriteLine(Password);
}
OnPropertyChanged
метод
protected virtual void OnPropertyChanged([CallerMemberName]string propertyName = null)
{
if (PropertyChanged != null)
{
PropertyChanged(this,
new PropertyChangedEventArgs(propertyName));
}
}
Что ваш 'OnPropertyChanged' выглядеть? и правильно ли вы устанавливаете свой «BindingContext»? – Johan
Почему вы привязываете свойство boolean IsVisible к строке ErrorMessagePropertyName? –
Это имя 'DisplayError', сохраненное в константе. Это нормально. Хотя это выглядит странно с первого взгляда. – Wosi