簡體   English   中英

如何動態綁定ItemsControl

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM