当 Entry 字段不可见时,如何隐藏 Xamarin 表单中的错误标签?
How to hide the error label in Xamarin forms, when the Entry field is not visible?
我正在尝试创建一个存在验证错误的登录页面。现在,如果 Entry 字段不可见,也会出现验证错误。当输入字段不可见时,如何隐藏错误标签?如下图: PIN 输入字段在登录页面上不可见,但错误消息:Pin is required,高亮显示。请问有人可以提出解决方法吗?
同意 Jason 的观点。您可以使用数据绑定将标签的 IsVisible
绑定到视图模型中的 属性。
<Label Text="Pin is required!" TextColor="Red" HorizontalTextAlignment="Center" IsVisible="{Binding isVisible}"/>
<Button Text="sign in" BackgroundColor="Red" TextColor="White" Command="{Binding ClickCommand}" WidthRequest="200" />
在您的 ViewModel 中
public class YourViewModel: INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public ICammand ClickCommand {get; set;}
private bool isvisible;
public bool isVisible
{
get
{
return isvisible;
}
set
{
if (isvisible!= value)
{
isvisible= value;
NotifyPropertyChanged();
}
}
public YourViewModel()
{
//...
isVisible = true; //show the label in default
ClickCommand = new Command(() =>
{
if(xxx)
{
isVisible =false;
}
else
{
isVisible =true;
}
}) ;
}
}
我正在尝试创建一个存在验证错误的登录页面。现在,如果 Entry 字段不可见,也会出现验证错误。当输入字段不可见时,如何隐藏错误标签?如下图: PIN 输入字段在登录页面上不可见,但错误消息:Pin is required,高亮显示。请问有人可以提出解决方法吗?
同意 Jason 的观点。您可以使用数据绑定将标签的 IsVisible
绑定到视图模型中的 属性。
<Label Text="Pin is required!" TextColor="Red" HorizontalTextAlignment="Center" IsVisible="{Binding isVisible}"/>
<Button Text="sign in" BackgroundColor="Red" TextColor="White" Command="{Binding ClickCommand}" WidthRequest="200" />
在您的 ViewModel 中
public class YourViewModel: INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public ICammand ClickCommand {get; set;}
private bool isvisible;
public bool isVisible
{
get
{
return isvisible;
}
set
{
if (isvisible!= value)
{
isvisible= value;
NotifyPropertyChanged();
}
}
public YourViewModel()
{
//...
isVisible = true; //show the label in default
ClickCommand = new Command(() =>
{
if(xxx)
{
isVisible =false;
}
else
{
isVisible =true;
}
}) ;
}
}