私のUWPアプリケーションには、ユーザー入力のための10x3テキストボックスのページがあります。 私はそれらの間で計算して、3つの他にそれを示しています。「同じコード」を使用する複数のテキストボックス
私は今すぐ働くことができました。 しかし、他はすべて同じコードです。 コードをもう一度書くのではなく、異なるテキストボックス名でもう一度やり直すのではなく、すべてのテキストボックスに対してよりスマートな方法がありますか?
ここには、テキストボックスの最初の行のコードがあります。
public sealed partial class Januar : Page
{
CultureInfo danish = new CultureInfo("da-DK");
public Januar()
{
this.InitializeComponent();
}
private void KilometerEt_LostFocus(object sender, RoutedEventArgs e)
{
if (!string.IsNullOrEmpty(KilometerEt.Text))
KilometerKortEt.Text = Convert.ToString(Convert.ToInt32(KilometerEt.Text) - Convert.ToInt32(MainPage.Current.KmTaller.Text));
else
KilometerKortEt.Text = "";
}
private void LiterEt_LostFocus(object sender, RoutedEventArgs e)
{
if (!string.IsNullOrEmpty(LiterEt.Text))
{
KortPerLiterEt.Text = Math.Round(Convert.ToDecimal(KilometerKortEt.Text)/Convert.ToDecimal(LiterEt.Text, danish), 2).ToString(danish);
}
else
KortPerLiterEt.Text = "";
}
private void PrisEt_LostFocus(object sender, RoutedEventArgs e)
{
if (!string.IsNullOrEmpty(PrisEt.Text))
{
PrisPerLiterEt.Text = Math.Round(Convert.ToDecimal(PrisEt.Text, danish)/Convert.ToDecimal(LiterEt.Text, danish), 2).ToString(danish);
}
else
PrisPerLiterEt.Text = "";
}
}
あなたが私がそこでやっていることをやり遂げるためのより簡単な方法があれば教えてください。私は、あなたが基本的に同じロジックで各テキストボックス(すなわちUIElement.LostFocus
)の同じイベントを処理しているので、あなたは、単一の方法でそれを行うことができ、事前
はい、MVVMを学んでください。たとえば、KilometerKortEtとLiterEtのペアがあるようです。あなたは、2つの異なる名前を持つ別のペアとして、そのテキストボックスのペア間の関係を繰り返すのですか?もしそうなら、それは小さなビューモデルでなければならず、それを表示するDataTemplateが必要です。 –
イベントハンドラを1つだけ使用し、senderオブジェクトパラメータを使用できます。例https://stackoverflow.com/a/44247669/2946329 –
@ S.Akbariいいえ。しかし、何も送っていないテキストボックスはどうですか? – TheisTN