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

- 侧边菜单
- 底部状态栏
- 主体内容区域
2.字体库、样式
-
导入FontAwesome
-
字体库的使用
![image]()
-
所有样式都必须在app文件中合并
![image]()
2.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 切换页面时保存
在页面后台代码直接写,单选按钮的点击事件

4.客户管理页

<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 插入数据

6.2 保存数据
(就是主页调用的切换页保存方法)
public void Save()
{
customerProvider.Save();
}
6.3 加载数据







浙公网安备 33010602011771号