私は約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);
}
}
これはプロパティとそのプロパティをループし、文字列であり空でない場合は値をnullに設定します。 String以外のものにバインドする場合は、少し修正する必要があります。
2
たとえば、私は同じ状況ですが、すべてのエントリとドロップダウンはBindingContextを通じてモデルによって結ばれています。
フォームを消去するときは、モデルを再度インスタンス化してBindingContextにバインドするだけです。
private void ClearForm_OnClicked(object sender, EventArgs e)
{
BindingContext = new ViewModel();
_viewModel = (ViewModel)BindingContext;
}
関連する問題
- 1. フォームの一部のフィールドで検証エラーが発生し、JSFフォームのすべてのフィールドがクリアされます
- 2. IPadすべてのフィールドをクリアして起動します
- 3. バックボタンを押すたびにフォーム内のすべてのフィールドをクリア
- 4. フォームのフィールドのキャッシュをクリアする
- 5. Reduxフォームのフィールド値のクリア
- 6. Facebookのすべてのフィールドをクリアして、手動で登録フォームに記入しますか?
- 7. フォーム入力フィールドのクリア
- 8. すべてのラベル用のカスタムフォントXamarinフォーム
- 9. フォームの検証によって、偽の場合はすべてのフィールドがクリアされます
- 10. フォーム内のすべてのテキストボックスのテキストをクリアするには?
- 11. XamarinフォームのTextDecorationをクリアできませんUWPアプリケーション
- 12. Laravel 5.2 CSRFすべてのフォームのフィールド?
- 13. Word VB、すべてのチェックされたフィールドをクリアする
- 14. フォームすべての計算フィールド - アクセス2013
- 15. Xamarinフォームを使用してWindows Phoneでナビゲーションスタックをクリアする方法
- 16. ブラウザの戻るボタンで戻るときにフォームのすべてのフィールドをクリアする
- 17. Qtのcairo_push_groupアナログ:「クリア」コンポジションモードは、その下のすべてをクリアします
- 18. 私のシステムは「クリア」ですか?すべてをクリアしない?
- 19. Xamarinフォームモーダルスタックをクリアする
- 20. xamarinフォームのクラスプロパティを更新します。
- 21. フォームが提出されたときに特定のフィールド(すべてではない)をクリアする
- 22. マシュマロのすべてのアプリのキャッシュをクリアしますか?
- 23. C++のすべてのファイル内のデータをクリアします
- 24. Xamarinフォーム - 一意のIDを保持する非表示のフィールド
- 25. Xamarinフォームはリストビューの各項目に入力フィールドを追加します
- 26. XSLのすべてのテキスト要素をクリアします
- 27. Docker mongodbのすべての項目をクリアしますか?
- 28. Devexpress:ASPxGridLookupのすべてのボタンをクリアします。
- 29. フォームのすべてのフィールドを非表示にする
- 30. AngularJsのすべてのフィールドでフォームを検証する
これはただの思考ではなく、それが動作するかしない場合、すべての入力ボックスのためにあなたが例のエントリ1の文字列の配列にバインドすることができることを確認しては、文字列にバインドされた文字列に[1]、エントリ2である[2 ] 等々。クリアボタンでは、すべての入力ボックスを並べ替えるべき配列をクリアすることができます。私は簡単なドロップダウン方法についてはわかりません。 –