2014-06-09 206 views
0

我有一个ListView,我想显示多个集合相同的类型(与我发现的有关多重绑定的所有其他主题相反),或者甚至更好 - 一个不可编辑的项目,例如“default项目“,作为ListView中的第一项和多个相同类型的连接集合。例如,对于一个集合和一个项目:WPF 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分析器(未提到一些语法,但这是一个例子)。当然,我可以连续收集所有藏品,并检查是否编辑过的项目不是第一个,但我很好奇这个问题是否可以解决。
任何想法,谁来实现这一目标?

+1

你有没有看着'CompositeCollection'? – BradleyDotNET

+0

你能提供这种情况的代码示例吗?我不确定我应该如何将物品和收藏绑定在一起......(以官方示例它不起作用) – wondra

+1

我的例子在这里有帮助吗? http://stackoverflow.com/a/23772569/1783619 – BradleyDotNET

回答

1

不知道这是你需要的。但是你的问题描述可以更清楚。

ObservableCollection<ObservableCollection<Person>> PeopleLists{get;set;} 

绑定在XAML

<ListView ItemsSource="{Binding PeopleLists}"> 
    <ListView.ItemTemplate> 
      <DataTemplate> 
      <ListView ItemsSource={Binding}> 
       <ListView.ItemTemplate> 
        <DataTemplate> 
         <WrapPanel> 
          <TextBlock Text="{Binding Name}" /> 
         </WrapPanel> 
        </DataTemplate> 
       </ListView.ItemTemplate> 
      </ListView> 
      </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 
+0

是的,这正是我试图避免的解决方案的类型。这是一个工作解决方案,但很抱歉不接受。 – wondra