wpf CollectionViewSource的运用

实体类:

员工类: 

public class Department : ObservableCollection<Employee>

{

public string DepName { get; set; }

public ObservableCollection<Employee> Employees { get; set; }
}

 

 

部门类:

public class Employee
{
public int Number { get; set; } //工号
public string Name { get; set; } //姓名
public string Sex { get; set; } //性别
public int BirthYear { get; set; } //出生年份
}

 

 

部门集合类:

public class DepartmentList : ObservableCollection<Department>
{
public DepartmentList()
{
ObservableCollection<Employee> employee1 = new ObservableCollection<Employee> 
{
new Employee{Number=2012,Name="netboy",Sex="boy",BirthYear=1992},
new Employee{Number=2013,Name="dandan",Sex="girl",BirthYear=2000},
new Employee{Number=2014,Name="xiaobai",Sex="girl",BirthYear=2012}
};

ObservableCollection<Employee> employee2 = new ObservableCollection<Employee> 
{
new Employee{Number=2020,Name="kaizi",Sex="girl",BirthYear=2011},
new Employee{Number=2021,Name="yangzai",Sex="gril",BirthYear=2010}
};

this.Add(new Department { DepName = "技术部", Employees = employee1 });
this.Add(new Department { DepName = "商务部", Employees = employee2 });
//ObservableCollection<Department> deparment = new ObservableCollection<Department> 
//{
// new Department{DepName="tengfei",Employees=employee1},
// new Department{DepName="google",Employees=employee2}
//};
}

 

UI,XAML:

 

<Window x:Class="CollectionViewSourceDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CollectionViewSourceDemo.Models"
Title="MainWindow" Height="500" Width="1000">
<Window.Resources>
<local:DepartmentList x:Key="deplist"/>
<CollectionViewSource x:Key="departmentView" Source="{StaticResource ResourceKey=deplist}"/>
<DataTemplate x:Key="dtEmployees">
  <StackPanel Height="50" HorizontalAlignment="Center" Width="480" VerticalAlignment="Top" Orientation="Horizontal">
    <TextBlock Height="50" HorizontalAlignment="Left" Width="90" Text="{Binding Number}"/>
    <TextBlock Height="50" Width="120" Text="{Binding Name}"/>
    <TextBlock Height="50" Width="120" Text="{Binding BirthYear}"/>
    <TextBlock Height="50" Width="120" Text="{Binding Sex}"/>
 </StackPanel>
</DataTemplate>
</Window.Resources>
<Grid>
<StackPanel>
<TextBlock Width="200" Height="50" FontSize="36" Text="请选择部门:"/>
  <ListBox Name="lb1" Height="100" Width="156" DisplayMemberPath="DepName" ItemsSource="{Binding Source={StaticResource departmentView}}"
    HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="32" />
  <TextBlock Height="62" Width="111" HorizontalAlignment="Left" VerticalAlignment="Top"
       Text="{Binding Path=DepName,Source={StaticResource departmentView}}" Foreground="Red" FontSize="32" />
  <TextBlock Text="员工列表" FontSize="20" Foreground="Blue"/>
  <StackPanel Orientation="Horizontal">
  <TextBlock Text="工号" Margin="5" />
  <TextBlock Text="名字" Margin="70,5,5,5"/>
  <TextBlock Text="出生日期" Margin="70,5,5,5" />
  <TextBlock Text="性别" Margin="75,5,5,5"/>
  </StackPanel>
 <ListBox Name="lb2" ItemsSource="{Binding Path=Employees,Source={StaticResource departmentView}}"
ItemTemplate="{StaticResource dtEmployees} /> </StackPanel> </Grid> </Window>

 

posted @ 2015-03-05 14:23  秋刀鱼No1  阅读(1432)  评论(0编辑  收藏  举报