【问题标题】:WPF ListView binding multiple sourcesWPF ListView 绑定多个源
【发布时间】: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 集合)

标签: c# wpf xaml listview


【解决方案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>

【讨论】:

  • 是的,这正是我试图避免的解决方案类型。这是一个可行的解决方案,很抱歉不接受。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-27
  • 2011-05-25
  • 2011-11-25
  • 2016-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多