我正在使用wpf构建医疗应用程序,并且我已经为患者的处方创建了一个列表,我在其中添加了.add函数。但它始终只显示添加的最后一项,而不是全部。任何意见?提前致谢!以下是我的代码:
private void AddMeds_Click(object sender, RoutedEventArgs e)
{
if (MedNameAdd.Text != null && MedQuantAdd.Text != null && QuantType.Text != null)
{
List<string> medlist = new List<string>();
int i = 0;
medlist.Add(MedNameAdd.Text + " " + MedQuantAdd.Text + " " + QuantType.Text);
MedList.ItemsSource = medlist;
Address.Text = medlist[i];
i++;
}
}
答案 0 :(得分:2)
您每次都在创建新的List
,将声明移到外部函数。
List<string> medlist = new List<string>();
private void AddMeds_Click(object sender, RoutedEventArgs e)
{
if (MedNameAdd.Text != null && MedQuantAdd.Text != null && QuantType.Text != null)
{
medlist.Add(MedNameAdd.Text + " " + MedQuantAdd.Text + " " + QuantType.Text);
MedList.ItemsSource = medlist;
Address.Text = medlist.LastOrDefault(); // shows last added item.
}
}
答案 1 :(得分:1)
似乎在您的代码中,您始终创建了新的空列表并将其添加为ItemSource
。相反,重新使用现有的
if (MedNameAdd.Text != null && MedQuantAdd.Text != null && QuantType.Text != null)
{
var medlist = MedList.ItemsSource as List<string>;
int i = 0;
medlist.Add(MedNameAdd.Text + " " + MedQuantAdd.Text + " " + QuantType.Text);
Address.Text = medlist[i];
i++;
}
答案 2 :(得分:1)
列表medList
在方法AddMeds_Click
中是本地的,这意味着它是在每次调用中新创建的。
答案 3 :(得分:1)
因为每次添加新的数据源时,您都会从头开始重新接收数据源,只添加新添加的项目,并擦除之前添加的所有项目。
将List<string>
的声明移到click事件处理程序之外:
List<string> medlist = new List<string>();
private void AddMeds_Click(object sender, RoutedEventArgs e)
{
if (MedNameAdd.Text != null && MedQuantAdd.Text != null && QuantType.Text != null)
{
int i = 0;
medlist.Add(MedNameAdd.Text + " " + MedQuantAdd.Text + " " + QuantType.Text);
MedList.ItemsSource = medlist;
Address.Text = medlist[i];
i++;
}
答案 4 :(得分:0)
似乎每次在事件处理程序中创建List Class的新实例并且只添加一个项目:
medlist.Add(MedNameAdd.Text + " " + MedQuantAdd.Text + " " + QuantType.Text);
将列表实例化为类成员,并在事件处理程序中使用该列表对象以这种方式保存其中的值:
List<string> medlist = new List<string>();
private void AddMeds_Click(object sender, RoutedEventArgs e)
{
if (MedNameAdd.Text != null && MedQuantAdd.Text != null && QuantType.Text != null)
{
int i = 0;
medlist.Add(MedNameAdd.Text + " " + MedQuantAdd.Text + " " + QuantType.Text);
MedList.ItemsSource = medlist;
Address.Text = medlist[i];
i++;
}
}