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:使用
网格
-布局而不是多个
堆栈布局