如何从静态类更新列表框
本文关键字:列表 更新 静态类 | 更新日期: 2023-09-27 18:33:30
我的 XAML 标记是
<Grid x:Name="gdTest" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,0,5,0" >
<ListBox Width="400" Margin="10" x:Name="lstDemo">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=id}" Margin="20" />
<TextBlock Text="{Binding Path=name}" Margin="20"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
我的超级类是
public class SuperClass
{
public Arguments arguments;
public class Stat
{
public int downloadCount;
}
public class Files
{
public int id;
public string name;
public List<Stat> SomeStats;
}
public class Arguments
{
public List<Files> Files;
}
}
在应用程序类中,我将我的超类声明为静态。(App.SuperClass以调度计时器的间隔填充)。
public partial class App : Application
{
public static SuperClass SuperClass = new SuperClass();
}
最后,当我将静态类的列表绑定到 ListBox 时,模拟器中不显示任何内容。
lstDemo.ItemsSource = App.SuperClass.arguments.Files;
我在这里做错了什么?
不使用公共字段,请使用自动属性。对 ItemsSource 绑定使用可观察集合,以便在发生添加/删除事件时通知列表框。
public class SuperClass
{
public Arguments Args { get; set; }
public class Stat
{
public int DownloadCount { get; set; }
}
public class File
{
public int Id { get; set; }
public string Name { get; set; }
public List<Stat> SomeStats { get; set; }
}
public class Arguments
{
public ObservableCollection<File> Files { get; set; }
}
}
将
列表更改为 ObservableCollection。Strandard 列表集合不执行 UI 上的添加/删除通知不会更新。
public class Arguments
{
public ObservableCollection<Files> Files;
}
此外,与其以这种方式直接设置 ItemsSource,更好的方法是将 Xaml Binding of ItemsSource 与 ViewModel 一起使用。