Xamarin.forms 表单如何在填写表单后激活按钮
我的想法是,只有当用户输入Xamarin.forms 表单如何在填写表单后激活按钮,xamarin.forms,Xamarin.forms,我的想法是,只有当用户输入姓名姓氏鸟日期年份NumberOfDocs时,按钮才会启用并保存数据。有什么建议吗?以下是使用登录名+密码进行简单登录的逻辑,其中登录按钮仅在LoginName和LoginPassword包含文本时启用: <Frame HasShadow="False"> <StackLayout Orientation="Vertical" > <Entry
姓名
姓氏鸟日期
年份
NumberOfDocs
时,按钮才会启用并保存数据。有什么建议吗?以下是使用登录名+密码进行简单登录的逻辑,其中登录按钮仅在LoginName
和LoginPassword
包含文本时启用:
<Frame HasShadow="False">
<StackLayout Orientation="Vertical" >
<Entry Placeholder="NAME" x:Name="name"></Entry>
<Entry Placeholder="SURNAME" x:Name="surname"></Entry>
<StackLayout Orientation="Horizontal" >
<Label Text="BIRTHDATE" VerticalOptions="Center" HorizontalOptions="Center" ></Label>
<DatePicker x:Name="birdthdate" HorizontalOptions="Center" VerticalOptions="Center"></DatePicker>
</StackLayout>
<StackLayout Orientation="Horizontal">
<Label Text="PICK YEARS" HorizontalOptions="Center" VerticalOptions="Center"></Label>
<Picker Title="YEARS" x:Name="years" HorizontalOptions="Center" VerticalOptions="Center"></Picker>
</StackLayout>
<StackLayout Spacing="0">
<Label Text="Number of docs:"></Label>
<Entry Keyboard="Numeric" x:name="docs"></Entry>
</StackLayout>
<Button Text="SAVE" TextColor="White" Padding="0,-20" BackgroundColor="#07987f" IsEnabled="false" >
</Button>
</StackLayout>
</Frame>
只需将此功能扩展到您的需要,它就会工作。以下是使用登录名+密码进行简单登录的逻辑,其中登录按钮仅在
LoginName
和LoginPassword
包含文本时启用:
<Frame HasShadow="False">
<StackLayout Orientation="Vertical" >
<Entry Placeholder="NAME" x:Name="name"></Entry>
<Entry Placeholder="SURNAME" x:Name="surname"></Entry>
<StackLayout Orientation="Horizontal" >
<Label Text="BIRTHDATE" VerticalOptions="Center" HorizontalOptions="Center" ></Label>
<DatePicker x:Name="birdthdate" HorizontalOptions="Center" VerticalOptions="Center"></DatePicker>
</StackLayout>
<StackLayout Orientation="Horizontal">
<Label Text="PICK YEARS" HorizontalOptions="Center" VerticalOptions="Center"></Label>
<Picker Title="YEARS" x:Name="years" HorizontalOptions="Center" VerticalOptions="Center"></Picker>
</StackLayout>
<StackLayout Spacing="0">
<Label Text="Number of docs:"></Label>
<Entry Keyboard="Numeric" x:name="docs"></Entry>
</StackLayout>
<Button Text="SAVE" TextColor="White" Padding="0,-20" BackgroundColor="#07987f" IsEnabled="false" >
</Button>
</StackLayout>
</Frame>
只要将此扩展到您的需要,它就会起作用。有多种方法可以做到这一点。最简单的方法就是丹尼斯·施勒的答案。但看起来您没有使用MVVM,所以我有另一个使用转换器的解决方案 将按钮更改为:
private string _loginName;
public string LoginName
{
get { return _loginName; }
set
{
SetProperty(ref _loginName, value);
RaisePropertyChanged("IsLoginButtonEnabled");
}
}
private string _loginPassword;
public string LoginPassword
{
get { return _loginPassword; }
set
{
SetProperty(ref _loginPassword, value);
RaisePropertyChanged("IsLoginButtonEnabled");
}
}
public bool IsLoginButtonEnabled
{
get
{
if (!string.IsNullOrEmpty(LoginName) &&
!string.IsNullOrEmpty(LoginPassword))
{
return true;
}
return false;
}
}
将转换器放入您的页面ResourceDictionary
,您就可以开始了
PS:使用
网格
-layout而不是多个堆栈布局
有多种方法可以实现这一点,从而提高性能。最简单的方法就是丹尼斯·施勒的答案。但看起来您没有使用MVVM,所以我有另一个使用转换器的解决方案
将按钮更改为:
private string _loginName;
public string LoginName
{
get { return _loginName; }
set
{
SetProperty(ref _loginName, value);
RaisePropertyChanged("IsLoginButtonEnabled");
}
}
private string _loginPassword;
public string LoginPassword
{
get { return _loginPassword; }
set
{
SetProperty(ref _loginPassword, value);
RaisePropertyChanged("IsLoginButtonEnabled");
}
}
public bool IsLoginButtonEnabled
{
get
{
if (!string.IsNullOrEmpty(LoginName) &&
!string.IsNullOrEmpty(LoginPassword))
{
return true;
}
return false;
}
}
将转换器放入您的页面ResourceDictionary
,您就可以开始了
PS:使用网格
-布局而不是多个堆栈布局