Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.forms 当我在xamarin表单中单击submit按钮时,如何将isenabled属性绑定到MVVM中的条目_Xamarin.forms_C# 4.0_Cross Platform_Mvvmcross_Isenabled - Fatal编程技术网

Xamarin.forms 当我在xamarin表单中单击submit按钮时,如何将isenabled属性绑定到MVVM中的条目

Xamarin.forms 当我在xamarin表单中单击submit按钮时,如何将isenabled属性绑定到MVVM中的条目,xamarin.forms,c#-4.0,cross-platform,mvvmcross,isenabled,Xamarin.forms,C# 4.0,Cross Platform,Mvvmcross,Isenabled,当我使用mvvm体系结构以xamarin表单提交表单时,我遇到了一个问题。我的表单UI仍然可以使用,用户可以在从服务器获取数据时进行交互。我想在运行提交按钮从服务器获取数据时禁用UI元素。实际上,我想在viewmodel中绑定isEnabled属性。但我不知道如何从视图模型中将其设置为bool值,然后将其绑定到UI元素。我需要在我的set函数中添加什么,这样当有人单击submit按钮时,我的UI元素将处于非活动状态,直到服务器发出响应,用户才能进行编辑。 做什么请帮忙。这是我的密码 大宗报价 首

当我使用mvvm体系结构以xamarin表单提交表单时,我遇到了一个问题。我的表单UI仍然可以使用,用户可以在从服务器获取数据时进行交互。我想在运行提交按钮从服务器获取数据时禁用UI元素。实际上,我想在viewmodel中绑定isEnabled属性。但我不知道如何从视图模型中将其设置为bool值,然后将其绑定到UI元素。我需要在我的set函数中添加什么,这样当有人单击submit按钮时,我的UI元素将处于非活动状态,直到服务器发出响应,用户才能进行编辑。 做什么请帮忙。这是我的密码

大宗报价


首先,将所有
IsEnabled
属性绑定到同一个VM属性

<Entry x:Name="entryFullName" IsEnabled="{Binding NotBusy}" ... />
<Picker x:Name="pickerGender" IsEnabled="{Binding NotBusy}" ... />
...
<Button x:Name="btnSubmit" IsEnabled="{Binding NotBusy}" ... />
                
最后,在保存时设置属性

private void OnSubmit()
{

   if (string.IsNullOrEmpty(this.FullName))
   {
      this.ErrorOccurred?.Invoke(this, "Please enter full name");
      return;
   }
   
   NotBusy = false;
   Device.BeginInvokeOnMainThread(async () => await this.SaveProfile();
}

您可以添加一个属性IsNotSubmitting

private bool _isNotSubmitting = true;
public bool IsNotSubmitting {
    get => _isNotSubmitting ;
    set {
        _isNotSubmitting  = value;
        OnPropertyChanged();
    }
}
在Xaml中绑定:

 <Entry x:Name="entryFullName"
    Text="{Binding FullName}" 
    Placeholder="Full Name" 
    IsEnabled="{Binding IsNotSubmitting}"  />

现在,您可以在方法SubmitCommand的开头设置“IsNotSubmitting=false”,并且可以在提交完成时设置“IsNotSubmitting=true”

private void OnSubmit()
{

   if (string.IsNullOrEmpty(this.FullName))
   {
      this.ErrorOccurred?.Invoke(this, "Please enter full name");
      return;
   }
   
   NotBusy = false;
   Device.BeginInvokeOnMainThread(async () => await this.SaveProfile();
}
private bool _isNotSubmitting = true;
public bool IsNotSubmitting {
    get => _isNotSubmitting ;
    set {
        _isNotSubmitting  = value;
        OnPropertyChanged();
    }
}
 <Entry x:Name="entryFullName"
    Text="{Binding FullName}" 
    Placeholder="Full Name" 
    IsEnabled="{Binding IsNotSubmitting}"  />