如何动态地绑定ItemsControl
本文关键字:绑定 ItemsControl 动态 何动态 | 更新日期: 2023-09-27 18:18:54
我将List<>
绑定到ItemsControl
,如下所示:
<ItemsControl x:Name="myItemsControl" ItemsSource="{Binding MyList}" Grid.Row="1">
我需要在事件上动态地将此绑定更改为另一个List
。
如何做到这一点?我试了下面的方法,但是不起作用。
myItemsControl.ItemSource = MyListOther;
您可以将MyList
的引用更改为List<T>
的另一个实例,或者您可以重新填充MyList
引用的列表。
请注意,假设您正在使用MVVM设计模式,并且MyList
是视图模型(即当前DataContext)上的属性,那么您应该在视图模型上实现INotifyPropertyChanged
,并在MyList
引用更改时调用PropertyChanged
事件。
哦,这很简单,只要看看下面的代码,一切都应该清楚了。
XAML:<ListBox Name="list" />
后台代码:
private List<string> collection = new List<string> { "test", "2", "3" };
public MainPage()
{
InitializeComponent();
Binding b = new Binding();
b.Source = collection;
list.SetBinding(ListBox.ItemsSourceProperty, b);
}
当然,需要这样的分辨率可能表明您的架构是不正确的。您应该使用MVVM (Model View ViewModel)
设计模式,然后实现INotifyPropertyChanged
接口来通知View
列表更改。这样就不需要在后台代码中手动创建绑定。此外,您可以使用ObservableCollection<T>
,它会自动通知Views
,每次添加或删除新元素时使用此列表。
这些只是提示,供您在实现应用程序时考虑。如果您正在编写一些简单的测试代码,那么代码滞后并没有那么糟糕,但是在更大的应用程序中,请尝试MVVM
方法。