Update automatic ListBox items when alter List<T>
本文关键字:lt gt List alter automatic ListBox items when Update | 更新日期: 2023-09-27 18:20:21
我有一个ListBox,我用ItemsSource
和List<Control>
填充它。
但是,当我删除或添加此列表的新控件时,我需要每次重置我的ListBox项目源
有没有ListBox同步列表内容的方法?
不要使用List<T>
,而是使用ObservableCollection<T>
。这是一个支持WPF:更改通知的列表
// if this isn't readonly, you need to implement INotifyPropertyChanged, and raise
// PropertyChanged when you set the property to a new instance
private readonly ObservableCollection<Control> items =
new ObservableCollection<Control>();
public IList<Control> Items { get { return items; } }
在您的Xaml中,使用这样的东西。。。
<ListBox ItemsSource="{Binding MyItemsSource}"/>
然后像这样把它连接起来。。。
public class ViewModel:INotifyPropertyChanged
{
public ObservableCollection<Control> MyItemsSource { get; set; }
public ViewModel()
{
MyItemsSource = new ObservableCollection<Control> {new ListBox(), new TextBox()};
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string name)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
}
这将把项目显示在ListBox中。在这里的示例中,集合包含一个ListBox和一个TextBox。您可以从集合中添加/删除,并获得您想要的行为。控件本身并不像ListBox项那么好,因为它们没有一种有意义的方式来填充可视化。因此,您可能需要通过IValueConverter来运行它们。
在视图模型中实现INotifyPropertyChanged接口。张贴在这个列表的setter中,调用NotifyPropertyChanged事件。这将导致在UI 上更新您的更改