(二)主窗体布局、字体图标、样式

1.主窗体布局

image

  • 侧边菜单
  • 底部状态栏
  • 主体内容区域

2.字体库、样式

  • 导入FontAwesome

  • 字体库的使用
    image

  • 所有样式都必须在app文件中合并
    image

2.2 单选按钮样式

  1. 背景,前景,聚焦效果,字体大小,模板(图标和文字)
  2. 触发器:选中,鼠标悬空,未选中(背景,前景,块色)

3.主页业务层

3.1 退出时保存

  #region commands
  public RelayCommand<MainWindow> ClosingCommand
  {
      get
      {
          return new RelayCommand<MainWindow>((window) =>
          {
              Save(window.container.Content);
          });
      }
  }

  #endregion
  #region methods
  public void Save(object content)
  {
      var name = content.GetType().Name;

      switch (name)
      {
          case "AriTransportView":
              if (!(content is AriTransportView ariTransportView)) return;
              if (!(ariTransportView.DataContext is AriTransportViewModel ariTransportViewModel)) return;
              ariTransportViewModel.Save();
              break;
          case "AirTransportDetailView":
              if (!(content is AirTransportDetailView airTransportDetailView)) return;
              if (!(airTransportDetailView.DataContext is AirTransportDetailViewModel airTransportDetailViewModel)) return;
              airTransportDetailViewModel.Save();
              break;
          case "MemberView":
              if (!(content is MemberView memberView)) return;
              if (!(memberView.DataContext is MemberViewModel memberViewModel)) return;
              memberViewModel.Save();
              break;
          case "CustomerView":
              if (!(content is CustomerView customerView)) return;
              if (!(customerView.DataContext is CustomerViewModel customerViewModel)) return;
              customerViewModel.Save();
              break;
          default:
              break;
      }
  }
  #endregion

3.2 切换页面时保存

在页面后台代码直接写,单选按钮的点击事件
image

4.客户管理页

image

 <i:Interaction.Triggers>
     <i:EventTrigger EventName="Loaded">
         <i:InvokeCommandAction Command="{Binding LoadedCommand}" />
     </i:EventTrigger>
 </i:Interaction.Triggers>
 <Grid>
     <Grid.RowDefinitions>
         <RowDefinition Height="auto" />
         <RowDefinition />
     </Grid.RowDefinitions>
     <!--  title and button  -->
     <Grid Grid.Row="0">
         <TextBlock
             HorizontalAlignment="Center"
             VerticalAlignment="Center"
             FontSize="18"
             Text="客户管理" />
         <StackPanel
             Margin="0,0,8,0"
             HorizontalAlignment="Right"
             Orientation="Horizontal">
             <Button
                 Command="{Binding InsertCustomerCommand}"
                 Content="新增客户"
                 Style="{StaticResource ButtonStyle}" />
         </StackPanel>
     </Grid>
     <!--  table content  -->
     <DataGrid
         Grid.Row="1"
         CellStyle="{StaticResource GeneralDataGridCellStyle}"
         ItemsSource="{Binding CustomerList}"
         RowStyle="{StaticResource GeneralDataGridRowStyle}"
         Style="{StaticResource GeneralDataGridStyle}">
         <DataGrid.Columns>
             <DataGridTextColumn
                 Width="60"
                 Binding="{Binding Id}"
                 Header="序号" />
             <DataGridTemplateColumn Width="150" Header="客户名称">
                 <DataGridTemplateColumn.CellTemplate>
                     <DataTemplate>
                         <Grid>
                             <TextBox Style="{StaticResource GeneralTextBoxStyle}" Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                         </Grid>
                     </DataTemplate>
                 </DataGridTemplateColumn.CellTemplate>
             </DataGridTemplateColumn>
             <!--<DataGridTextColumn Width="150" Header="客户名称" Binding="{Binding Name}"/>-->

             <DataGridTemplateColumn Width="150" Header="电话">
                 <DataGridTemplateColumn.CellTemplate>
                     <DataTemplate>
                         <Grid>
                             <TextBox Style="{StaticResource GeneralTextBoxStyle}" Text="{Binding Telphone, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                         </Grid>
                     </DataTemplate>
                 </DataGridTemplateColumn.CellTemplate>
             </DataGridTemplateColumn>

             <DataGridTemplateColumn Width="150" Header="国家">
                 <DataGridTemplateColumn.CellTemplate>
                     <DataTemplate>
                         <Grid>
                             <TextBox Style="{StaticResource GeneralTextBoxStyle}" Text="{Binding Nation, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                         </Grid>
                     </DataTemplate>
                 </DataGridTemplateColumn.CellTemplate>
             </DataGridTemplateColumn>

             <DataGridTemplateColumn Width="150" Header="地址">
                 <DataGridTemplateColumn.CellTemplate>
                     <DataTemplate>
                         <Grid>
                             <TextBox Style="{StaticResource GeneralTextBoxStyle}" Text="{Binding Address, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                         </Grid>
                     </DataTemplate>
                 </DataGridTemplateColumn.CellTemplate>
             </DataGridTemplateColumn>
             <DataGridTemplateColumn Width="150" Header="备注">
                 <DataGridTemplateColumn.CellTemplate>
                     <DataTemplate>
                         <Grid>
                             <TextBox Style="{StaticResource GeneralTextBoxStyle}" Text="{Binding Tag, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                         </Grid>
                     </DataTemplate>
                 </DataGridTemplateColumn.CellTemplate>
             </DataGridTemplateColumn>
             <DataGridTextColumn
                 Width="150"
                 Binding="{Binding InsertDate}"
                 Header="录入时间" />
         </DataGrid.Columns>
     </DataGrid>
 </Grid>

5. 自定义表格样式

  • 表样式

  • 行样式

  • 单元格样式

  • 表头样式
    image

  • SelectionMode 是否支持多选
    image

  • AutoGenerateColumns 获取或设置一个值,该值指示是否自动创建列。

  • CanUserAddRows 是否可以添加新行

  • CanUserDeleteRows 是否可以删除行

  • CanUserReorderColumns 获取或设置一个值用来判断是否允许用户重新排列表列的位置。

  • CanUserResizeColumns 获取或设置用户是否可以通过使用鼠标调整列的宽度。

  • CanUserResizeRows 获取或设置用户是否可以通过使用鼠标调整行的高度。

  • CanUserSortColumns 是否可以单击列标题来对列排序。

  • ScrollViewer.VerticalScrollBarVisibility

  • ScrollViewer.HorizontalScrollBarVisibility

  • HorizontalGridLinesBrush获取或设置用于绘制水平网格线的画笔。

  • VerticalGridLinesBrush获取或设置用于绘制垂直网格线的画笔。

  • BorderBrush 此属性设置 Border 用来绘制边框的 Brush 对象。

  • FrozenColumnCount 获取或设置非滚动列的数量。

6. 客户业务层

6.1 插入数据

image

6.2 保存数据

(就是主页调用的切换页保存方法)

 public void Save()
 {
     customerProvider.Save();
 }

6.3 加载数据

image

学习知识点

FocusVisualStyle属性

查询

template属性

WPF Style和Template

controltemplate

查询

TemplateBinding

查询

Focusable

查询

posted @ 2023-12-01 08:48  huihui不会写代码  阅读(47)  评论(0)    收藏  举报