[英]How to bind a `BindingList<Pair<string,string>> to a `ListView` such that when the strings change the listview updates?
我有一個BindingList<Pair<string,string>>
(其中Pair
只是您的沼澤標准泛型,包含兩個相關的對象)。 我希望能夠將其綁定到ListView
,以使.First
值位於第1列中,而.Second
值位於第2列中。此外,如何確保列表視圖始終代表列表的內容,這樣如果我更改其中一個字符串, ListView
自動更新?
這是我的Pair<TI,TJ>
類供參考:
public class Pair<TI, TJ>
{
public TI First;
public TJ Second;
public Pair(TI first, TJ second)
{
First = first;
Second = second;
}
}
為了明確BindingList
, BindingList
只是我當前正在嘗試使用的集合,我可以使用能夠支持此功能並持有Pair<string,string>
任何集合。
我手頭沒有IDE,但這主要取決於您使用WinForms還是XAML / WPF。 由於它可能是最后一種(更現代),因此有一些提示:
一般來說,它看起來像這樣:
<ListView ItemsSource="{Binding ListOfYourData}"
SelectedItem="{Binding Path=SelectedItem}"
...
<ListView.View>
<GridView>
<GridViewColumn Width="140" Header="First"
DisplayMemberBinding="{Binding First}"
<GridViewColumn Width="140" Header="Second"
DisplayMemberBinding="{Binding Second}"
使用Winforms進行數據綁定有兩個重要的接口。
IBindingList-此問題與“集合”有關,當添加新元素或刪除元素時,它將更新控件。 BindingList已經實現了它,因此您不必擔心。 如果要在沒有此界面的情況下測試行為,則可以使用簡單的List進行測試。
INotifyPropertyChanged-此對象與“對象”有關,當對象的屬性之一發生變化(對象的值已更改)時,它將更新控件。 您的“對”類應實現此接口。 這是微不足道的。 您只需添加一個Sub PropertyChanged()即可引發一個事件,並在您的屬性設置器中添加對此Sub的調用。
如果需要樣本,可以看看MSDN。
https://msdn.microsoft.com/fr-fr/library/system.componentmodel.inotifypropertychanged(v=vs.110).aspx
恢復 :
No IBindingList =>在集合中添加或刪除對象時,控件不會更新。
否INotifyPropertyChanged =>當對象的屬性更改時,控件不會更新。
編輯-當然,控件必須支持Binding,而傳統ListView則不是如此。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.