[英]How to do binding of an ItemsControl dynamically
我將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
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.