我将List<>
绑定到ItemsControl
,如下所示:
<ItemsControl x:Name="myItemsControl" ItemsSource="{Binding MyList}" Grid.Row="1">
我需要动态地将此绑定更改为事件上的另一个List
。
怎么做?我尝试了以下方法,但没有用。
myItemsControl.ItemSource = MyListOther;
答案 0 :(得分:2)
您可以将MyList
的引用更改为List<T>
的另一个实例,或者您可以重新填充MyList
引用的列表。
请注意,假设您正在使用MVVM设计模式,并且MyList
是视图模型(当前的DataContext)上的属性,那么您应该在视图模型上实现INotifyPropertyChanged
,并在PropertyChanged
引用更改时调用MyList
事件。
答案 1 :(得分:2)
哦,这很简单,只需看看下面的代码,一切都应该清楚。
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
。
这些只是您在实施应用程序时需要考虑的提示。如果您只是编写一些简单的测试代码,那么代码背后的代码并不是那么糟糕,但在更大的应用程序中尝试{{1}}方法。