我有一個包含大約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. 提交後清除所有字段
- 8. __doPostBack清除所有文本字段
- 9. 使用javascript清除所有HTML字段
- 10. 用瀏覽器返回按鈕清除表單中的所有字段
- 11. 清除Xamarin表單模式堆棧
- 12. 表單驗證清除JavaScript字段
- 13. 正在清除表單輸入字段
- 14. 用Javascript清除表單字段點擊
- 15. 提交後清除Redux表單字段
- 16. 字VB,清除所有選中的字段
- 17. PostgreSQL的:清除所有表
- 18. jQuery表單字段清單
- 19. 循環顯示錶單字段並顯示除表單字段以外的所有表單字段
- 20. 在訪問表單時清除現有記錄的字段
- 21. 使用jQuery中的onchange事件清除/刷新所有字段
- 22. 清除EditText字段中的所有文本按鈕
- 23. 如何清除p:dataTable中的所有輸入字段?
- 24. 在其他字段驗證失敗時清除表單字段
- 25. 清除magento中的所有catalog_product_flat表
- 26. 如何從Zend Form中清除所有單個字段的驗證器?
- 27. 通過單擊MVC5中的提交按鈕清除所有字段
- 28. 窗體某些字段上的驗證錯誤,清除JSF表單的所有字段
- 29. 清除所有字段的窗體上有一個母版頁
- 30. 如何不清除php表單中的輸入字段?
這只是一個想法,不知道是否可行與否,所有的輸入框,你可以把它綁定到字符串,例如第1項的數組綁定到字符串[1],進入2串[2 ] 等等。在清除按鈕上,您可以清除應對所有輸入框進行排序的數組,我不確定是否有任何簡單的下拉方式。 –