WPF:行列显示

  • 新建显示病人信息控件PatientElement
    Add-->NewItem-->WPF-->UserControl(WPF),名称:PatientElement.xmal

  • <UserControl x:Class="WPF_OPDrug.PatientElement"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" 
                 d:DesignHeight="100" d:DesignWidth="300">
        <Grid Margin="5">
            <Border BorderThickness="2" Background="CadetBlue" BorderBrush="DarkGray">
                
                <StackPanel Orientation="Horizontal" >
                    <Image Name="image_photo" Height="100" Width="100" Source=""></Image>
                    <StackPanel Orientation="Vertical">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Name="block_PatName" Text="{Binding GivenName}" VerticalAlignment="Center" Margin="1,5" FontSize="18"></TextBlock>
                            <TextBlock Name="block_PatId" Text="{Binding Id}" VerticalAlignment="Center" Margin="2,5" FontSize="16" Foreground="Navy"/>
                            <TextBlock Name="block_Sex" Text="{Binding SexId}" VerticalAlignment="Center" Margin="1,5" FontSize="16" Foreground="Navy"></TextB
                        </StackPanel>
                        <StackPanel>
                            <TextBlock Name="block_Age" Text="{Binding Birthday}" VerticalAlignment="Center" Margin="2,5" FontSize="16" Foreground="Navy"></TextBlock>
                            <TextBlock Name="block_condition" Margin="5,0" FontSize="16" Foreground="Navy" Width="auto" TextWrapping="Wrap">病情</TextBlock>
                        </StackPanel>
                        </StackPanel>
                </StackPanel>
            </Border>
        </Grid>
    </UserControl>
  • 在DataOP.cs中写函数从数据库model中获取信息获取
  •  /// <summary>
            /// 获取patient的必要个人信息
            /// </summary>
            /// 
            public List<Patient> GetPatInfor()
            {
                var patient = (from p in his.Patient
                               select new
                               {
                                   GivenName = p.GivenName,
                                   Id=p.Id,
                                   SexId = p.SexId,
                                   Birthday = p.Birthday
                               }).ToList().Select(o => new Patient
                             {
                                 GivenName = o.GivenName,
                                 Id = o.Id,
                                 SexId = o.SexId,
                                 Birthday = o.Birthday
                             }).ToList();
                return patient;
            }
  • 显示病人信息的PatientWin.xmal
  • <Window x:Class="WPF_OPDrug.PatientWin"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="PatientWin" WindowState="Maximized" Background="CadetBlue">
        <Grid>
                <Border Name="queryBorder" BorderThickness="7">
                        <Grid Name="grid_Query">
                        </Grid>
                </Border>
        </Grid>
    </Window>
  • 病人信息先行后列显示
  • /// <summary>
            /// //上下滑动显示,先行后列
            /// </summary>
            private void AddUpToDown()
            {
                List<Patient> pat = dataOP.GetPatInfor();
                int count = pat.Count;
                //定义行数=屏幕宽度/控件宽度;列数=病人总数/行数
                int cols = (int)(Convert.ToDouble(SystemParameters.WorkArea.Width) / 300); 
                int rows = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(count) / cols)); 
                //为grid_Query添加行
                for (int ri = 0; ri < rows; ri++)
                {
                    RowDefinition row = new RowDefinition();
                    row.Height = new GridLength(110);
                    grid_Query.RowDefinitions.Add(row);
                }
                //为grid_Query添加列
                for(int ci=0;ci<cols;ci++)
                {
                    ColumnDefinition col=new ColumnDefinition();
                    col.Width = new GridLength(300);
                    grid_Query.ColumnDefinitions.Add(col);
                }
    
                int colNum = 0;
                int rowNum = 0;
    
                for (int i = 0; i < count; i++)
                {
                    PatientElement patient = new PatientElement();
                    patient.block_PatName.Text = pat[i].GivenName.ToString();
                    patient.block_PatId.Text = pat[i].Id.ToString();
                    patient.block_Sex.Text = pat[i].SexId.ToString();
                    patient.block_Age.Text = Convert.ToDateTime(pat[i].Birthday).ToString();
                    
                     if (colNum == cols)
                     {
                         rowNum++;
                         colNum = 0;
                     }
                     patient.SetValue(Grid.ColumnProperty, colNum);
                     patient.SetValue(Grid.RowProperty, rowNum);
                     colNum++;
                     grid_Query.Children.Add(patient);
                }
            }
  • 病人信息先列后行显示
  • /// <summary>
            /// 左右滑动,先列后行
            /// </summary>
            /// <returns></returns>
            private void AddLeftToRight()
            {
                List<Patient> pat = dataOP.GetPatInfor();
                int count = pat.Count;
               
                //由于每行要放置病人信息控件个数:即每行最多能放的个数
                int rows = (int)(Convert.ToDouble(SystemParameters.WorkArea.Height) / 110); //*定义行数
                int cols = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(count) / rows));//*定义列数
    
                //为queryGrid添加rows行
                for (int ri = 0; ri < rows; ri++)
                {
                    RowDefinition rd = new RowDefinition();
                    rd.Height = new GridLength(110);
                    grid_Query.RowDefinitions.Add(rd);
                }
                //为queryGrid添加cols列
                for (int ci = 0; ci <cols; ci++)
                {
                    ColumnDefinition cd = new ColumnDefinition();
                    cd.Width = new GridLength(300);
                    grid_Query.ColumnDefinitions.Add(cd);
                }
    
                int rowNum = 0;
                int colNum = 0;
    
                for (int i = 0;i < count; i++)
                {
                    PatientElement patient = new PatientElement();
                    patient.block_PatName.Text = pat[i].GivenName.ToString();
                    patient.block_PatId.Text = pat[i].Id.ToString();
                    patient.block_Sex.Text = pat[i].SexId.ToString();
                    patient.block_Age.Text = pat[i].Birthday.ToString();
    
                   if (rowNum == rows)
                   {
                       colNum++;
                       rowNum = 0;
                   }
                   patient.SetValue(Grid.ColumnProperty, colNum);
                   patient.SetValue(Grid.RowProperty, rowNum);
                   rowNum++;
                   grid_Query.Children.Add(patient);
                }
            }
原文地址:https://www.cnblogs.com/YunGy/p/3314145.html