我目前有一个C#应用程序,用于测试设备上的特定参数。我已经创建了一个单独的类来处理测试。我想在“测试类”中添加每个项目后自动更新列表框。
我为UI创建的“MainWindow”类在按钮点击时创建了一个新的“Test”类。
public partial class MainWindow : Window{
//Other initializing steps..
private void BeginTestButton_Click(..){
TestClass tc = new TestClass(this); //<-- passing this class in
tc.testAll();
}
}
其中“TestClass”中的testAll函数看起来像这样..
public void testAll(){
view.getListBox().add(test1());
view.getListBox().add(test2());
view.getListBox().add(test3());
// and so on
}
视图是UI类,getListBox()
是有问题的列表框。执行的每个“测试”都会返回一些字符串,这将是测试的结果。
将这些测试结果添加到列表框并在每次测试完成后更新,我可以使用哪些方法?谢谢!
答案 0 :(得分:1)
你想要对TestClass做些什么,可能会扩展INotifyPropertyChanged。从那里你可以在TestClass上添加一个属性。调整列表框以显示的不仅仅是字符串/标记,如果还没有,请执行以下操作:
<ListBox x:Name="ListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Label Content="{Binding TestName}"></Label>
<Label Content="{Binding TestCompleteStatus}"></Label>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
然后,每当您启动测试时,您都需要更改TestClass中的TestCompleteStatus属性(确保在UI线程或调度程序上执行此操作,因为您现在将绑定到UI)。您的属性更改后,ListBox将自动使用新属性值更新。这是INotifyPropertyChanged的功能。
答案 1 :(得分:-1)
public void testAll(){
view.getListBox().add(test1());
view.getListBox().add(test2());
view.getListBox().add(test3());
// and so on
}
您需要将test1()从void更改为任何func ex:
int test1(){
// now retern value
return 0;
}
public void testAll(){
view.getListBox().add(Convert.ToInt32(test1()));
}