我有一个包含大约25个字段和一些下拉列表的表单,我想要一个干净的按钮来重置所有表单,是否有一个简单的方法来执行此操作?清除Xamarin表单中的所有字段
1
A
回答
2
如果您的控件绑定到具有双向绑定的对象,则可以遍历属性并使用下面的代码清除值。
private async void btnClear_Clicked(object sender, EventArgs e)
{
MyData data = (MyData)this.BindingContext;
await ClearProperties(data);
}
private async Task ClearProperties<T>(T instance)
{
await ClearProperties(typeof(T), instance);
}
private async Task ClearProperties(Type classType, object instance)
{
foreach (PropertyInfo property in classType.GetRuntimeProperties())
{
object value = null;
try
{
value = property.GetValue(instance, null);
}
catch (Exception)
{
//Debug.WriteLine(ex.Message);
}
if (value != null && property.PropertyType != typeof(String))
await ClearProperties(property.PropertyType, value);
else if (value != null && (String)value != "")
property.SetValue(instance, null);
}
}
这循环遍历属性及其属性,如果它是一个字符串,它不是空的,它将设置为空值。如果你绑定到一个字符串以外的东西,你可能需要修改一下。
2
例如,我有相同的情况,但所有条目和下拉列表都通过BindingContext与模型绑定。
清除表单时,唯一需要的是再次实例化模型并将其绑定到BindingContext。
private void ClearForm_OnClicked(object sender, EventArgs e)
{
BindingContext = new ViewModel();
_viewModel = (ViewModel)BindingContext;
}
相关问题
- 1. 如何在搜索后清除表单中的所有字段?
- 2. 清除所有字段
- 3. 清除Ember中的表单字段2.10
- 4. 表单验证清除所有字段,如果为假
- 5. 清除ASP.net表格中的所有字段
- 6. Qt:如何清除表单的字段?
- 7. __doPostBack清除所有文本字段
- 8. 提交后清除所有字段
- 9. 使用javascript清除所有HTML字段
- 10. 用浏览器返回按钮清除表单中的所有字段
- 11. 提交后清除Redux表单字段
- 12. 用Javascript清除表单字段点击
- 13. 正在清除表单输入字段
- 14. 清除Xamarin表单模式堆栈
- 15. 字VB,清除所有选中的字段
- 16. PostgreSQL的:清除所有表
- 17. jQuery表单字段清单
- 18. 循环显示表单字段并显示除表单字段以外的所有表单字段
- 19. 在访问表单时清除现有记录的字段
- 20. 使用jQuery中的onchange事件清除/刷新所有字段
- 21. 通过单击MVC5中的提交按钮清除所有字段
- 22. 如何从Zend Form中清除所有单个字段的验证器?
- 23. 窗体某些字段上的验证错误,清除JSF表单的所有字段
- 24. 如何不清除php表单中的输入字段?
- 25. 如何清除窗体中的某些字段 - Redux表单
- 26. 在提交表单后用ajax清除所有表单元素
- 27. 如何清除Silverlight中的所有表单/网格数据?
- 28. 清除表单中的所有重新输入
- 29. excel vba清除用户表单中的所有refedit控件
- 30. 使用jQuery提交表单后,清除表单中的一个字段
这只是一个想法,不知道是否可行与否,所有的输入框,你可以把它绑定到字符串,例如第1项的数组绑定到字符串[1],进入2串[2 ] 等等。在清除按钮上,您可以清除应对所有输入框进行排序的数组,我不确定是否有任何简单的下拉方式。 –