我有一个方法,在我的列表框中添加名为refreshInterface的项目,一旦programe启动就会调用它,使用FormItems类在列表框中添加homeforms的名称,下面是rereshInterface方法
public void refreshInterface()
{
//int number = 0;
foreach (DataSet1.xspGetAnalysisUsageTypesRow homeForms in myDataSet.xspGetAnalysisUsageTypes)
{
var forms = new FormItems(homeForms);
listBox1.Items.Add(forms);
}
}
FormItems类如下所示
public class FormItems
{
public DataSet1.xspGetAnalysisUsageTypesRow types { get; set; }
public FormItems(DataSet1.xspGetAnalysisUsageTypesRow usageTypes)
{
types = usageTypes;
}
public override string ToString()
{
// returns the rows that are relating to types.xlib_ID
var libtyps = types.GetxAnalysisUsageRows();
var cnt = 0;
foreach (DataSet1.xAnalysisUsageRow ty in libtyps)
{
//returns true if ty is null
bool typeNull = ty.Isxanu_DefaultNull();
// if its false, if xanu_Default is set
if (!typeNull)
{
cnt += 1;
}
}
var ret = String.Format("set {0} [Set: {1}]", types.xlib_Desc, cnt);
//return this.types.xlib_Desc;
return ret;
}
}
每个列表框(列表框位于homeform的左侧)项目都有一些可以添加到其中的报告,例如,我从列表框中选择一个homeform,右边有12个文本框每个文本框都有一对浏览和清除按钮。如果我单击浏览按钮,则会出现一个新表单,然后我从该表单中选择一个报表并将其添加到特定文本框中,该主题表的计数应该更新,并且我清除特定homeform的文本框,计数也应该更新。
在我调试应用程序的那一刻,它会显示每个Homeform的计数,具体取决于添加到homeform的报告数量,但是当programe正在运行时,如果我向homeform添加新报告,则计数直到我重新启动调试会话才更新。我被告知使用数据绑定方法,但不知道我如何在这里使用它
如何更新我的列表框项目?
答案 0 :(得分:0)
您应该将List Box组件源绑定到Observable Collection,您对Observable Collection所做的每次更新都将更新List Box数据。
答案 1 :(得分:0)
Might not be exact but should give you an idea.
public void refreshInterface()
{
Dictionary<int,string> items = new Dictionary<int,string>();
//int number = 0;
foreach (DataSet1.xspGetAnalysisUsageTypesRow homeForms in myDataSet.xspGetAnalysisUsageTypes)
{
var formitem = new FormItems(homeForms);
items.Add(formitem.someprop, formitem.toString());
}
listbox.DataSource = items;
listbox.DisplayMember = "Value";
listbox.ValueMember = "Key";
}
答案 2 :(得分:0)
你应该考虑绑定。这是一个很好的起点:
http://www.codeproject.com/Articles/140621/WPF-Tutorial-Concept-Binding
如果您希望GUI响应数据更改,那么绑定是您最好的朋友。