• 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>
  • 相关阅读:
    小小小康
    GC日志补充
    一次GC问题定位
    mycat1.5~1.6的一个bug
    [转] java Statement和PreparedStatement批量更新
    java 中的instanceof 运算符
    Java学习篇之数组方法
    iOS7适配的一点小技巧
    iOS 中正确切换摄像头&正确实现设置帧率的方式
    iOS 音量键事件监控响应
  • 原文地址:https://www.cnblogs.com/527289276qq/p/4315741.html
Copyright © 2020-2023  润新知