原文:WPF,ListView设置分组

今天遇到一个问题,就是在ListView中设置分组。想了很久在网上早了些资料作出一个例子。

分组字段也可以在后台中定义:
    CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(listView1.ItemsSource);
PropertyGroupDescription groupDescription = new PropertyGroupDescription("Country");
view.GroupDescriptions.Add(groupDescription); //或者
var sourceView = new ListCollectionView(Trades);
var groupDesctripition = new PropertyGroupDescription("Country");
sourceView.GroupDescriptions.Add(groupDesctripition);
listView1.ItemsSource = sourceView;

XAML

  <Window.Resources>
<CollectionViewSource x:Key="trades" Source="{Binding}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Country"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource> </Window.Resources>
<Grid>
<TextBox Height="23" HorizontalAlignment="Left" Margin="114,35,0,0" Name="textBox1" VerticalAlignment="Top" Width="211" />
<ListView Height="224" HorizontalAlignment="Left" Margin="68,81,0,0"
Name="listView1" VerticalAlignment="Top" Width="460" ItemsSource="{Binding Source={StaticResource trades}}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding TradeType}" Header="TradeType" Width="100" />
<GridViewColumn DisplayMemberBinding="{Binding Units}" Header="Units" Width="100"/>
<GridViewColumn DisplayMemberBinding="{Binding USDAmount, StringFormat=C}" Header="USDAmount" Width="100"/>
</GridView>
</ListView.View>
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander IsExpanded="True" BorderBrush="#EA1730" BorderThickness="0,0,0,1">
<Expander.Header>
<DockPanel>
<TextBlock FontWeight="Bold" Text="{Binding Path=Name}" Margin="5,0,0,0" Width="150"/>
<TextBlock FontWeight="Bold" Text="{Binding Path=ItemCount}"/>
</DockPanel>
</Expander.Header>
<Expander.Content>
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<ItemsPresenter Grid.Row="0"/>
</Grid>
</Expander.Content>
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
</Grid>
  public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
ObservableCollection<TradeTest> Trades = new ObservableCollection<TradeTest>();
Trades.Add(new TradeTest() { TradeType = "Subscription1", Units = , USDAmount = , Country = "UNITED STATES" });
Trades.Add(new TradeTest() { TradeType = "Subscription2", Units = , USDAmount = , Country = "UNITED STATES" });
Trades.Add(new TradeTest() { TradeType = "Subscription3", Units = , USDAmount = , Country = "UNITED STATES" }); Trades.Add(new TradeTest() { TradeType = "Subscription4", Units = , USDAmount = , Country = "UNITED KINGDOM" });
Trades.Add(new TradeTest() { TradeType = "Subscription5", Units = , USDAmount = , Country = "UNITED KINGDOM" });
Trades.Add(new TradeTest() { TradeType = "Subscription6", Units = , USDAmount = , Country = "UNITED KINGDOM" });
Trades.Add(new TradeTest() { TradeType = "Subscription7", Units = , USDAmount = , Country = "UNITED KINGDOM" });
Trades.Add(new TradeTest() { TradeType = "Subscription8", Units = , USDAmount = , Country = "UNITED KINGDOM" }); Trades.Add(new TradeTest() { TradeType = "Subscription9", Units = , USDAmount = , Country = "UNITED" });
Trades.Add(new TradeTest() { TradeType = "Subscription10", Units = , USDAmount = , Country = "UNITED" });
Trades.Add(new TradeTest() { TradeType = "Subscription11", Units = , USDAmount = , Country = "UNITED" });
Trades.Add(new TradeTest() { TradeType = "Subscription12", Units = , USDAmount = , Country = "UNITED" });
this.DataContext = Trades;
}
}
public class TradeTest
{
private string _tradetype;
private int _units;
private float _amount;
private string _country; public string TradeType
{
get { return _tradetype; }
set { _tradetype = value; }
}
public int Units
{
get { return _units; }
set { _units = value; }
}
public float USDAmount
{
get { return _amount; }
set { _amount = value; }
}
public string Country
{
get { return _country; }
set { _country = value; }
}
}

WPF,ListView设置分组的更多相关文章

  1. WPF ListView控件设置奇偶行背景色交替变换以及ListViewItem鼠标悬停动画

    原文:WPF ListView控件设置奇偶行背景色交替变换以及ListViewItem鼠标悬停动画 利用WPF的ListView控件实现类似于Winform中DataGrid行背景色交替变换的效果,同 ...

  2. WPF ListView 居中显示

    原文:WPF ListView 居中显示 今天遇到的问题: 方法1:设置GridViewColumn的ActualWidth <ListView > <ListView.View&g ...

  3. Android 开源库StickyListHeadersListView来实现ListView列表分组效果

    项目中有一新的需求,要求能像一些Android机带"联系人列表"一样,数据可以自动分组,且在列表滑动过程中,列表头固定在顶部,效果图如下: 下面就带大家实现上面的效果, 首先,我们 ...

  4. 给ListView设置emptyView

    给ListView设置emptyView 版权声明:本文为博主原创文章,未经博主允许不得转载. 使用ListView和GridView时,当列表为空时,默认是不显示任何内容的,这样对用户非常不友好,这 ...

  5. PB gird类型数据窗口 设置分组、分组小计、合计

    今天遇到一个需求,gird表格数据如下:  部门  类型 数据   A  类型1  1  A  类型2  2  B  类型1  3  B  类型2  4   合计 10 实际需要显示的结果为:  部门 ...

  6. 在为ListView设置adapter时出错

    为listView设置adapter,代码如下: SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems, R.layout.m ...

  7. WPF后台设置xaml控件的样式System.Windows.Style

    WPF后台设置xaml控件的样式System.Windows.Style 摘-自 :感谢 作者: IT小兵   http://3w.suchso.com/projecteac-tual/wpf-zhi ...

  8. WPF ListView 选中问题

    WPF ListView 选中问题  摘自:http://www.cnblogs.com/BBHor/archive/2013/04/28/VisualTreeHelper-PreviewMouseD ...

  9. 【转】三十三、Android给ListView设置分割线Divider样式

    原文网址:http://www.cnblogs.com/linjiqin/archive/2011/11/12/2246349.html 给ListView设置分割线,只需设置如下两个属性: andr ...

随机推荐

  1. Oracle 中 流程控制函数 decode用法

    函数介绍 DECODE函数是ORACLE PL/SQL的功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其它数据库厂商的SQL实现还没有此功能. DECODE有什么用途呢?先构造一 ...

  2. Android中处理崩溃闪退错误

    Android中处理崩溃闪退异常 大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试, ...

  3. (其他)SQL注入(转)

    转自维基百科: SQL注入是一种代码注入技术,用于攻击数据驱动的应用程序,在这种应用程序中,恶意的SQL语句被插入输入字段中执行(例如将数据库内容转储给攻击者).[1] SQL注入必须利用应用程序软件 ...

  4. 移动端web页面开发常用的头部标签设置

    在移动端web页面开发中,我们常需要设置各种头部标签以帮助浏览器更好的解析页面,将页面完美呈现,这里列出了工作中常用的各种头部标签,以备查询. viewport <meta name=" ...

  5. 小技巧-mac修改finder菜单栏

    效果: 方法: 添加:打开finder后,长按command,可以将其他app拖到菜单栏. 删除:同理,长按command,将不需要的图标拖出菜单栏即可. PS:强烈推荐gotoshell这个小工具, ...

  6. ionic入门

    ionic安装 Ionic开发是依赖于Nodejs环境的,所以在开发之前我们需要安装好Nodejs.下载安装:http://nodejs.org/安装完成之后打开PowerShell输入命令node ...

  7. EasyUI datagrid.getSelections 没有返回正确的选择行数

    Actually i solved the problem. It was because the idField of the table i was using was incorrect. it ...

  8. 使用 PsPing & PaPing 进行 TCP 端口连通性测试

    PsPing & PaPing 介绍 通常,我们测试数据包能否通过 IP 协议到达特定主机时,都习惯使用 ping 命令.工作时 ping 向目标主机发送一个 IMCP Echo 请求的数据包 ...

  9. 转:SQL Server - 使用 Merge 语句实现表数据之间的对比同步

    表数据之间的同步有很多种实现方式,比如删除然后重新 INSERT,或者写一些其它的分支条件判断再加以 INSERT 或者 UPDATE 等.包括在 SSIS Package 中也可以通过 Lookup ...

  10. Flask应用错误处理

    目录 Flask 应用错误处理 错误日志工具 错误处理 注册 处理 日志 排除应用错误 有疑问时,请手动运行 使用调试器 参考 Flask 应用错误处理 应用出错,服务器出错.或早或晚,你会遇到产品出 ...