要让ListBox控件的项支持动态加载子项,可以使用数据绑定和模板化的方法。具体步骤如下:
<ListBox ItemsSource="{Binding Items}">
<!-- ListBox的子项模板 -->
<ListBox.ItemTemplate>
<DataTemplate>
<!-- 每个ListBox项的子项 -->
<ItemsControl ItemsSource="{Binding SubItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
public class MainViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private ObservableCollection<ItemViewModel> _items;
public ObservableCollection<ItemViewModel> Items
{
get { return _items; }
set
{
_items = value;
OnPropertyChanged("Items");
}
}
// 构造函数中初始化Items集合
public MainViewModel()
{
Items = new ObservableCollection<ItemViewModel>();
// 添加ListBox的项数据
Items.Add(new ItemViewModel() { SubItems = new ObservableCollection<string> { "SubItem1", "SubItem2", "SubItem3" } });
}
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public class ItemViewModel
{
public ObservableCollection<string> SubItems { get; set; }
}
通过以上步骤,就可以动态加载每个ListBox项的子项数据。在ViewModel中更新Items集合和每个ItemViewModel的SubItems集合即可动态显示ListBox的子项。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。