【问题标题】:Grouping in a ListBox bound to a Dictionary在绑定到字典的 ListBox 中分组
【发布时间】:2014-10-22 10:48:51
【问题描述】:

我有以下ListBox

<ListBox Name="listBox1">
  <ListBox.GroupStyle>
    <GroupStyle>
      <GroupStyle.HeaderTemplate>
        <DataTemplate>
          <TextBlock Text="{Binding Name}" Foreground="Red" />
        </DataTemplate>
      </GroupStyle.HeaderTemplate>
    </GroupStyle>
  </ListBox.GroupStyle>

  <ListBox.ItemTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding Value}" />
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

以及填充它和设置分组的代码:

var Addresses = new Dictionary<string, Address>();
Addresses.Add("1", new Address() { State = "xxx", ... });
...
var view = CollectionViewSource.GetDefaultView(Addresses);
view.GroupDescriptions.Add(new PropertyGroupDescription("State"));
listBox1.ItemsSource = view;

我没有分组,只有项目本身。如果我使用List 而不是Dictionary 来填充ListBox,它可以正常工作,但在这种特殊情况下,我确实需要Dictionary 的附加功能(通过关键,实际上)。

【问题讨论】:

  • 检查“输出”窗口中的绑定错误。我认为State 无法解决。一个快速的解决方法是将密钥添加到Address,然后您可以将它与 linq 一起使用来模仿Dictionary
  • 没有错误报告。我会尝试找出向PropertyGroupDescription 添加转换器是否可以提供解决方案...

标签: c# wpf dictionary listbox


【解决方案1】:

谢谢,Sinatr,这引导我朝着正确的方向前进。其实很简单:

view.GroupDescriptions.Add(new PropertyGroupDescription("Value.State"));

【讨论】:

    猜你喜欢
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 2015-03-13
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多