【发布时间】:2014-06-09 23:21:19
【问题描述】:
我有一个 ListView,我想显示多个 same 类型的集合(与我发现的有关多重绑定的所有其他主题相反),甚至更好 - 一个不可食用的项目,例如“默认item”,作为 ListView 中的第一项和多个相同类型的串联集合。例如一个集合和一个项目:
<ListView ItemsSource="{Binding People}">
<ListView.ItemTemplate>
<DataTemplate>
<WrapPanel>
<TextBlock Text="{Binding Name}" />
</WrapPanel>
</DataTemplate>
</ListView.ItemTemplate>
<ListViewItem ItemsSource="{Binding PatientZero}">
<WrapPanel>
<TextBlock Text="{Binding Name}" />
</WrapPanel>
</ListViewItem>
</ListView>
和
public class Person
{
public string Name { get; set; }
public Person(){}
}
...和代码
ObservableCollection<Person> _people =
new ObservableCollection<Person>();
public ObservableCollection<Person> People
{ get { return _people; } }
Person PatientZero { get { return _patientZero ; } }
Person _patientZero = new Person { Name="Unknown"}
显然,这不起作用,因为它不会通过 xaml 解析器(没有提及某些语法,但这是一个示例)。当然,我可以定期连接所有集合并检查编辑的项目是否不是第一个,但我很好奇这是否可以解决。
有什么想法可以实现吗?
【问题讨论】:
-
你看过
CompositeCollection吗? -
你能提供这种情况的代码示例吗?我不确定我应该如何将 item 和 collection 绑定在一起......(与官方示例它不起作用)
-
我的例子有帮助吗? stackoverflow.com/a/23772569/1783619
-
谢谢,它工作正常,这是我正在寻找的解决方案。可悲的是,我之前没有找到该线程(主要是因为标题与其内容不匹配)。我会删除这个问题,因为它是重复的,但由于原件的表述非常糟糕,最好保留它以避免更多重复。 (您可以在没有任何花哨的东西的情况下将项目添加到 ItemsSource 集合)