本项目提取了增删改查的基础方法,后续可以通过创建页面,继承vm来实现数据操作。可以通过扩展子类,来实现多表格关联查询操作。
目录
1、创建数据库实体类
2、创建viewmodel
3、创建子页面
子页面代码
4、创建主页面
5、其它辅助类
using PropertyChanged;
[AddINotifyPropertyChangedInterface]
public class HisBaseInfo
{
public virtual decimal PrimaryKey { get; set; }
}
///
///
///
[SugarTable("his_Hospital")]
public class HisHospital:HisBaseInfo
{
///
///
///
[SugarColumn(ColumnName="ID" ,IsPrimaryKey = true ,IsIdentity = true )]
public override decimal PrimaryKey { get; set; }
///
///
///
[SugarColumn(ColumnName="HospitalID" )]
public string HospitalID { get; set; }
///
///
///
[SugarColumn(ColumnName="HospitalName" )]
public string HospitalName { get; set; }
}
using GalaSoft.MvvmLight;
using InterfaceSimulator.Model;
using InterfaceSimulator.Utility;
public class CusViewModelBase : ViewModelBase
{
public EChildOperation ChildOperation { get; set; }
public object WorkFlowParam { get; set; }
public CusViewModelBase()
{
ChildOperation = UtilityHelper.GetChindWindowOperation();
WorkFlowParam = UtilityHelper.GetWorkFlowParam();
}
}
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;
using InterfaceSimulator.Dal;
//using InterfaceSimulator.Dal;
using InterfaceSimulator.Pages.BaseInfo;
using InterfaceSimulator.Utility;
using System;
using System.Collections.Generic;
// using PropertyChanged;
//using PropertyChanged;
using System.Linq;
using System.Windows;
using System.Windows.Navigation;
public class ViewModelBaseInfo
{
public ViewModelBaseInfo():base()
{
if (this.IsInDesignMode)
{
}
if (ChildOperation == Model.EChildOperation.Modify || ChildOperation == Model.EChildOperation.Delete)
{
if (base.WorkFlowParam != null)
{
QueryData(primarykey: ((T)WorkFlowParam).PrimaryKey.ToString());
}
}
}
public Dal.DataBaseHelper dal = new Dal.DataBaseHelper();
#region DataInfo
private T _data = new T() { };
public T Data
{
get => _data;
set {
_data = value;
RaisePropertyChanged(()=> Data);
}
}
private List
public List
get =>_dtaList;
set { _dtaList = value; RaisePropertyChanged(() => DataList); }
}
private RelayCommand queryCommand;
public RelayCommand QueryCommand {
get
{
if (queryCommand == null)
{
//查询按钮点击后 重置这个枚举
UtilityHelper.SetChindWindowOperation(Model.EChildOperation.None);
queryCommand = new RelayCommand(()=>QueryData());
}
return queryCommand;
}
set
{
queryCommand = value;
}
}
private RelayCommand
get
{
if (updateCommand == null)
{
updateCommand = new RelayCommand
}
return updateCommand;
}
set
{
updateCommand = value;
}
}
private RelayCommand
public RelayCommand
{
get
{
if (operationCommand == null)
{
operationCommand = new RelayCommand
}
return operationCommand;
}
set
{
updateCommand = value;
}
}
public virtual void QueryData(string primarykey= null)
{
if (string.IsNullOrEmpty(primarykey))
{
var _dataList = dal.Query
DataList = _dataList.ToList
}
else
{
var dataList = dal.Query
var _dataList = dataList.ToList
Data = _dataList.FirstOrDefault();
}
}
public virtual void UpdateData( object param )
{
var childOperation = UtilityHelper.GetChindWindowOperation();
if (childOperation == Model.EChildOperation.Add)
{
var result = dal.Add
if (result > 0)
{
MessageBox.Show("添加成功", "系统提示", MessageBoxButton.OK);
}
else
{
MessageBox.Show("添加失败", "系统提示", MessageBoxButton.OK);
}
}
else if (childOperation == Model.EChildOperation.Modify)
{
var result = dal.Update
if (result > 0)
{
MessageBox.Show("保存成功", "系统提示", MessageBoxButton.OK);
}
else
{
MessageBox.Show("保存失败", "系统提示", MessageBoxButton.OK);
}
}
else if (childOperation == Model.EChildOperation.Delete)
{
var diagResult = MessageBox.Show("是否删除", "系统提示", MessageBoxButton.OKCancel);
if (diagResult == MessageBoxResult.OK)
{
var result = dal.Delete
}
}
else if (childOperation == Model.EChildOperation.Query)
{
//query
if (param != null)
{
Utility.UtilityHelper.SetWorkFlowParam(param);
}
}
}
public virtual void OperationData(object param)
{
var childOperation = UtilityHelper.GetChindWindowOperation();
if (param != null)
{
Utility.UtilityHelper.SetWorkFlowParam(param);
}
}
#endregion
}
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"
xmlns:local="clr-namespace:InterfaceSimulator.Pages.His"
xmlns:localVM="clr-namespace:InterfaceSimulator.ViewModel"
xmlns:hc="clr-namespace:HandyControl.Controls;assembly=HandyControl"
mc:Ignorable="d"
Title="PageHisHospitalChild">
HorizontalScrollBarVisibility="Auto"
>
Style="{StaticResource TextBoxExtend}"
hc:InfoElement.TitleWidth="100"
hc:InfoElement.TitlePlacement="Top"
hc:InfoElement.Title="ID"
hc:InfoElement.Necessary="True"
Width="200"
VerticalAlignment="Center"
HorizontalAlignment="Left"
>
Style="{StaticResource TextBoxExtend}"
hc:InfoElement.TitleWidth="100"
hc:InfoElement.TitlePlacement="Top"
hc:InfoElement.Title="医院编号"
hc:InfoElement.Necessary="True"
hc:InfoElement.Placeholder="请输入医院编号"
Width="200"
VerticalAlignment="Center"
HorizontalAlignment="Left"
>
Style="{StaticResource TextBoxExtend}"
hc:InfoElement.TitleWidth="100"
hc:InfoElement.TitlePlacement="Top"
hc:InfoElement.Title="医院名称"
hc:InfoElement.Necessary="True"
hc:InfoElement.Placeholder="请输入医院名称"
Width="200"
VerticalAlignment="Center"
HorizontalAlignment="Left"
>
///
/// PageHospital.xaml 的交互逻辑
///
public partial class PageHospitalMain : Page
{
public PageHospitalMain()
{
InitializeComponent();
}
private string childPageUri = "pack://application:,,,/Pages/His/PageHisHospitalChild.xaml";
private void add_click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri(childPageUri));
Utility.UtilityHelper.SetChindWindowOperation(EChildOperation.Add);
}
private void update_click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri(childPageUri));
Utility.UtilityHelper.SetChindWindowOperation(EChildOperation.Modify);
}
private void drop_click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri(childPageUri));
Utility.UtilityHelper.SetChindWindowOperation(EChildOperation.Delete);
}
}
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"
xmlns:local="clr-namespace:InterfaceSimulator.Pages.BaseInfo"
mc:Ignorable="d"
xmlns:localVM="clr-namespace:InterfaceSimulator.ViewModel"
d:DesignHeight="450" d:DesignWidth="800"
Title="PageHospital">
AutoGenerateColumns="True"
HeadersVisibility="All" RowHeaderWidth="60"
SelectionMode="Single"
SelectionUnit="FullRow"
>
using System;
using System.Windows;
public sealed class UtilityHelper
{
public static void SetChindWindowOperation( Model.EChildOperation childOperation)
{
Application.Current.Properties["child_operation"] = childOperation;
}
public static Model.EChildOperation GetChindWindowOperation()
{
Model.EChildOperation operation = Model.EChildOperation.None;
//Application.Current.Properties["child_operation"] ;
if (Application.Current.Properties["child_operation"] != null)
{
operation = ( (Model.EChildOperation) Enum.Parse(typeof(Model.EChildOperation), Application.Current.Properties["child_operation"].ToString()));
//int tempOp = 0;
//int.TryParse(Application.Current.Properties["child_operation"].ToString(), out tempOp);
//operation = (Model.EChildOperation)tempOp;
}
return operation;
}
public static void SetWorkFlowParam(object obj)
{
Application.Current.Properties["work_flow_param"] = obj;
}
public static object GetWorkFlowParam()
{
object obj= Application.Current.Properties["work_flow_param"] ;
Application.Current.Properties["work_flow_param"] = null;
return obj;
}
}
public enum EChildOperation
{
None =0,
Add = 1,
Modify = 2,
Delete = 3,
Query = 4,
Bulkcreate = 5
}