我有一个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
只是我目前正在尝试使用的集合,我可以使用任何能够支持此功能的集合并持有Pair<string,string>
。
答案 0 :(得分:0)
我手头没有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}"
答案 1 :(得分:0)
使用Winforms进行数据绑定有两个重要的接口。
IBindingList - 这一个问题&#34;收集&#34;并在添加新元素或删除元素时更新控件。 BindingList已经实现了它,因此您不必注意。 如果要在没有此接口的情况下测试行为,可以使用简单的List进行测试。
INotifyPropertyChanged - 这一个问题&#34;对象&#34;并且当对象更改其属性之一(对象的值已更改)时将更新控件。你的班级&#34;配对&#34;应该实现这个接口。这是微不足道的。你必须添加一个Sub PropertyChanged()来引发一个事件,并在你的属性的setter中添加这个Sub的调用。
如果您想要样本,可以查看MSDN。
https://msdn.microsoft.com/fr-fr/library/system.componentmodel.inotifypropertychanged(v=vs.110).aspx
简历:
没有IBindingList =&gt;在集合中添加或删除对象时,控件不会更新。
否INotifyPropertyChanged =&gt;当对象的属性发生变化时,控件不会更新。
编辑 - 当然控件必须支持Binding,而不是传统ListView的情况......