feat:定级配置画面

master
sunhonglei 8 months ago
parent 6531b107ed
commit 3f5a6140f9
  1. 4
      Language/en_US.xaml
  2. 9
      Language/zh_CN.xaml
  3. 4
      Model/Helper/DataBaseHelper.cs
  4. 292
      ViewModel/Configuration/LevelConfigVM.cs
  5. 32
      Views/Configuration/LevelConfigPage.xaml

@ -22,6 +22,10 @@
<sys:String x:Key="ExitAsk">Do you want to exit the application?</sys:String>
<sys:String x:Key="ExitAskTitle">Exit Confirmation</sys:String>
<sys:String x:Key="GRADE_NAME">GRADE_EN_NAME</sys:String>
<sys:String x:Key="STANDARD_NAME">STANDARD_EN_NAME</sys:String>
<sys:String x:Key="SHAPE_NAME">SHAPE_EN_NAME</sys:String>
<sys:String x:Key="INSTITUTE_NAME">INSTITUTE_EN_NAME</sys:String>
<!--检测结果 报表-->
<sys:String x:Key="Avg">Average</sys:String>

@ -40,7 +40,14 @@
<sys:String x:Key="No">否</sys:String>
<sys:String x:Key="Cancel">取消</sys:String>
<sys:String x:Key="Confirm">确认</sys:String>
<sys:String x:Key="Save_successful_message">数据保存成功</sys:String>
<sys:String x:Key="save_fail_message">数据保存失败</sys:String>
<sys:String x:Key="no_data_message">没有导入数据</sys:String>
<sys:String x:Key="grade_config_left_top">参数 \\ 切工等级</sys:String>
<sys:String x:Key="GRADE_NAME">GRADE_NAME</sys:String>
<sys:String x:Key="STANDARD_NAME">STANDARD_NAME</sys:String>
<sys:String x:Key="SHAPE_NAME">SHAPE_NAME</sys:String>
<sys:String x:Key="INSTITUTE_NAME">INSTITUTE_NAME</sys:String>
<!--检测结果 报表-->
<sys:String x:Key="Avg">平均</sys:String>

@ -120,6 +120,10 @@ public class DataBaseHelper
SqliteCommand cmd = new SqliteCommand();
cmd.Connection = connection;
cmd.CommandText = sql;
if(sqliteTransaction != null)
{
cmd.Transaction = sqliteTransaction;
}
if (sqlParameters != null)
{
cmd.Parameters.AddRange(sqlParameters);

@ -1,9 +1,15 @@
using Newtonsoft.Json;
using HandyControl.Controls;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using SharpDX;
using SparkClient.Model.Helper;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq.Expressions;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Input;
@ -31,26 +37,30 @@ public class LevelConfigVM : BaseViewModel
private DataTable _standardList;
public DataTable StandardList { get { return _standardList; } set { _standardList = value; OnPropertyChanged("StandardList"); } }
DataGrid dataGrid;
private string GRADE_NAME = string.Empty;
private string STANDARD_NAME = string.Empty;
private bool _institutesEnabled = true;
public bool InstitutesEnabled { get { return _institutesEnabled; } set { _institutesEnabled = value; OnPropertyChanged("InstitutesEnabled"); } }
private bool _shapesEnabled = true;
public bool ShapesEnabled { get { return _shapesEnabled; } set { _shapesEnabled = value; OnPropertyChanged("ShapesEnabled"); } }
Info info = new Info();
private string Save_successful_message = MultilingualHelper.getString("Save_successful_message");
private string save_fail_message = MultilingualHelper.getString("save_fail_message");
private string no_data_message = MultilingualHelper.getString("no_data_message");
private string grade_config_left_top = MultilingualHelper.getString("grade_config_left_top");
private string GRADE_NAME = MultilingualHelper.getString("GRADE_NAME");
private string STANDARD_NAME = MultilingualHelper.getString("STANDARD_NAME");
public LevelConfigVM(DataGrid dataGrid)
{
if (dataGrid == null) return;
this.dataGrid = dataGrid;
GRADE_NAME = "GRADE_NAME";
STANDARD_NAME = "STANDARD_NAME";
ChangeShapeModelCommand = new RelayCommand(ChangeShapeModel);
ChangeInstituteModelCommand = new RelayCommand(ChangeInstituteModel);
LoadLevelConfigCommand = new RelayCommand(LoadLevelConfig);
DelLevelConfigCommand = new RelayCommand(DelLevelConfig);
SaveLevelConfigCommand = new RelayCommand(SaveLevelConfig);
InitLevelConfig(null);
InitData();
}
/// <summary>
@ -58,21 +68,29 @@ public class LevelConfigVM : BaseViewModel
/// </summary>
/// <param name="param"></param>
public void InitLevelConfig(object param)
{
Save_successful_message = MultilingualHelper.getString("Save_successful_message");
save_fail_message = MultilingualHelper.getString("save_fail_message");
no_data_message = MultilingualHelper.getString("no_data_message");
grade_config_left_top = MultilingualHelper.getString("grade_config_left_top");
GRADE_NAME = MultilingualHelper.getString("GRADE_NAME");
STANDARD_NAME = MultilingualHelper.getString("STANDARD_NAME");
}
private void InitData()
{
dataGrid.Columns.Clear();
string shapeSql = @"SELECT * FROM SHAPE;";
_shapes = DataBaseHelper.ExecuteQuery(shapeSql);
if (_shapes!= null) {
_shapeId = _shapes.AsEnumerable().FirstOrDefault()["SHAPE_ID"].ToString();
_instituteId = setInstitutes(_shapeId);
setDataGrid(_shapeId, _instituteId);
Shapes = DataBaseHelper.ExecuteQuery(shapeSql);
if (Shapes != null)
{
ShapeId = Shapes.AsEnumerable().FirstOrDefault()["SHAPE_ID"].ToString();
}
}
private string setInstitutes(string id)
{
string insituteSql = @"SELECT * FROM INSTITUTE WHERE SHAPE_ID = " + id+";";
_institutes = DataBaseHelper.ExecuteQuery(insituteSql);
return _institutes.AsEnumerable().FirstOrDefault()["INSTITUTE_ID"].ToString();
string insituteSql = @"SELECT * FROM INSTITUTE WHERE SHAPE_ID = " + id + ";";
Institutes = DataBaseHelper.ExecuteQuery(insituteSql);
return Institutes.AsEnumerable().FirstOrDefault()["INSTITUTE_ID"].ToString();
}
private void setDataGrid(string shapeId, string instituteId)
@ -87,29 +105,33 @@ public class LevelConfigVM : BaseViewModel
private void setStandardList(DataTable gradeList, DataTable standardList)
{
Style cellStyle = new Style(typeof(TextBlock));
Setter setSellStyle = new Setter(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Center);
cellStyle.Setters.Add(setSellStyle);
Setter setSellStyle1 = new Setter(TextBlock.VerticalAlignmentProperty, VerticalAlignment.Center);
cellStyle.Setters.Add(setSellStyle1);
dataGrid.Columns.Clear();
if (gradeList != null)
{
StandardList = new DataTable();
List<DataColumn> columns = new List<DataColumn>();
foreach (DataRow columnInfo in gradeList.Rows)
{
if (columns.Count == 0)
{
columns.Add(new DataColumn(columnInfo["GRADE_EN_NAME"].ToString()));
this.dataGrid.Columns.Add(new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString()) });
this.dataGrid.Columns.Add(new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString()),ElementStyle = cellStyle });
}
else
{
columns.Insert(0, new DataColumn(columnInfo["GRADE_EN_NAME"].ToString() + "_MIN"));
this.dataGrid.Columns.Insert(0, new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString() + "_MIN") });
this.dataGrid.Columns.Insert(0, new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString() + "_MIN"), ElementStyle = cellStyle });
columns.Add(new DataColumn(columnInfo["GRADE_EN_NAME"].ToString() + "_MAX"));
this.dataGrid.Columns.Add(new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString() + "_MAX") });
this.dataGrid.Columns.Add(new DataGridTextColumn() { Header = columnInfo[GRADE_NAME].ToString(), Binding = new Binding(columnInfo["GRADE_EN_NAME"].ToString() + "_MAX"), ElementStyle = cellStyle });
}
}
columns.Insert(0, new DataColumn("title"));
this.dataGrid.Columns.Insert(0, new DataGridTextColumn() { Header = "参数 \\ 切工等级", Binding = new Binding("title") });
this.dataGrid.Columns.Insert(0, new DataGridTextColumn() { Header = grade_config_left_top, Binding = new Binding("title"), ElementStyle = cellStyle });
StandardList.Columns.AddRange(columns.ToArray());
// 以标准名分组表示每一行
if (standardList != null)
@ -125,10 +147,10 @@ public class LevelConfigVM : BaseViewModel
// 每一行单元格内数据
var row = standard.Where(s => s["GRADE_ID"].ToString() == columnInfo["GRADE_ID"].ToString()).FirstOrDefault();
rowInfo.Add(
row["MIN_PREFIX"].ToString() +
getFix(row, "MIN_PREFIX") +
row["STANDARD_MIN"].ToString() + row["UNIT"].ToString() + "-"
+ row["STANDARD_MAX"].ToString() + row["UNIT"].ToString()
+ row["MIN_SUFFIX"].ToString()
+ getFix(row, "MIN_SUFFIX")
);
}
else
@ -137,23 +159,28 @@ public class LevelConfigVM : BaseViewModel
var row = standard.Where(s => s["GRADE_ID"].ToString() == columnInfo["GRADE_ID"].ToString()).FirstOrDefault();
if (row["STANDARD_MIN"] == null || row["STANDARD_MIN"].ToString() == "")
{
rowInfo.Insert(0, row["MIN_PREFIX"].ToString() + row["MIN_NULL_REPALCE"].ToString() + row["MIN_SUFFIX"].ToString());
rowInfo.Insert(0, getFix(row, "MIN_PREFIX")
+ row["MIN_NULL_REPALCE"].ToString()
+ getFix(row, "MIN_SUFFIX"));
}
else
{
rowInfo.Insert(0, row["MIN_PREFIX"].ToString() + row["STANDARD_MIN"].ToString() + row["UNIT"].ToString() + row["MIN_SUFFIX"].ToString());
rowInfo.Insert(0, getFix(row, "MIN_PREFIX")
+ row["STANDARD_MIN"].ToString()
+ row["UNIT"].ToString()
+ getFix(row, "MIN_SUFFIX"));
}
if (row["STANDARD_MAX"] == null || row["STANDARD_MAX"].ToString() == "")
{
rowInfo.Add(row["MAX_PREFIX"].ToString() +
rowInfo.Add(getFix(row, "MAX_PREFIX") +
row["MAX_NULL_REPALCE"].ToString()
+ row["MAX_SUFFIX"].ToString());
+ getFix(row, "MAX_SUFFIX"));
}
else
{
rowInfo.Add(row["MAX_PREFIX"].ToString() +
rowInfo.Add(getFix(row, "MAX_PREFIX") +
row["STANDARD_MAX"].ToString() + row["UNIT"].ToString()
+ row["MAX_SUFFIX"].ToString());
+ getFix(row, "MAX_SUFFIX"));
}
}
}
@ -165,13 +192,122 @@ public class LevelConfigVM : BaseViewModel
}
}
}
private string getFix(DataRow row,string fix){
string result = "";
result = row[fix].ToString().Replace("\\n","\r\n");
return result;
}
/// <summary>
/// 更新保存响应
/// </summary>
/// <param name="param"></param>
public void SaveLevelConfig(object param)
{
try {
string shapeId = "";
string instituteId = "";
if (info != null)
{
// 按照形状名查询形状数据,判断是否有该数据
string shapeSql = $"SELECT * FROM SHAPE WHERE SHAPE_NAME = '{info.SHAPE_NAME}';";
DataTable shapes = DataBaseHelper.ExecuteQuery(shapeSql);
// 现存db最大形状id取得
string shapeAllSql = $"SELECT * FROM SHAPE;";
DataTable shapeAllInfo = DataBaseHelper.ExecuteQuery(shapeAllSql);
DataBaseHelper.BeginTransaction();
// 形状表判断是否有数据
if (shapes == null || shapes.Rows.Count == 0)
{
var id = shapeAllInfo.AsEnumerable().Max(r => r["SHAPE_ID"]);
string maxShapeId = "0";
// 数据登录
if (id != null)
{
maxShapeId = id.ToString();
}
// 数据登录
int.TryParse(maxShapeId, out int result);
shapeId = string.Concat(result + 1);
string shapeInsertSql = $"INSERT INTO SHAPE (SHAPE_ID,SHAPE_NAME,SHAPE_EN_NAME,GUID)VALUES('{shapeId}','{info.SHAPE_NAME}','{info.SHAPE_EN_NAME}','{Guid.NewGuid().ToString()}');";
DataBaseHelper.ExecuteNonQuery(shapeInsertSql);
}
else
{
// 形状id取得
shapeId = shapes.Rows[0]["SHAPE_ID"].ToString();
}
// 按照机构名名查询机构数据,判断是否有该数据
string instituteSql = $"SELECT * FROM INSTITUTE WHERE INSTITUTE_NAME = '{info.INSTITUTE_NAME}' AND SHAPE_ID = '{shapeId}';";
DataTable institute = DataBaseHelper.ExecuteQuery(instituteSql);
// 现存db最大机构ID取得
string instituteAllSql = $"SELECT * FROM INSTITUTE WHERE SHAPE_ID = '{shapeId}';";
DataTable instituteAllInfo = DataBaseHelper.ExecuteQuery(instituteAllSql);
// 机构表判断是否有数据
if (institute == null || institute.Rows.Count == 0)
{
var id = instituteAllInfo.AsEnumerable().Max(r => r["INSTITUTE_ID"]);
string maxInstituteId = "0";
// 数据登录
if (id != null) {
maxInstituteId = id.ToString();
}
int.TryParse(maxInstituteId, out int result);
instituteId = string.Concat(result + 1);
string shapeInsertSql = $"INSERT INTO INSTITUTE (INSTITUTE_ID,SHAPE_ID,INSTITUTE_NAME,INSTITUTE_EN_NAME,GUID)VALUES('{instituteId}','{shapeId}','{info.INSTITUTE_NAME}','{info.INSTITUTE_EN_NAME}','{Guid.NewGuid().ToString()}');";
DataBaseHelper.ExecuteNonQuery(shapeInsertSql);
}
else
{
// 机构ID取得
instituteId = _instituteId;
}
// 定级数据登录
string gradeInsSql = "";
foreach (var gradeInfo in info.gradeInfos)
{
if (gradeInsSql.Length == 0)
{
gradeInsSql += gradeInfo.getDeleteSql(shapeId, instituteId);
}
gradeInsSql += gradeInfo.getInsertSql(shapeId, instituteId);
}
int count = DataBaseHelper.ExecuteNonQuery(gradeInsSql);
if (count<0)
{
DataBaseHelper.rollback();
Growl.Error(save_fail_message);
}
// 标准数据登录
string standardSql = "";
foreach (var standardInfo in info.standardInfos)
{
if (standardSql.Length == 0)
{
standardSql += standardInfo.getDeleteSql(shapeId, instituteId);
}
standardSql += standardInfo.getInsertSql(shapeId, instituteId);
}
count = DataBaseHelper.ExecuteNonQuery(standardSql);
if (count < 0)
{
DataBaseHelper.rollback();
Growl.Error(save_fail_message);
}
DataBaseHelper.commit();
Growl.Info(Save_successful_message);
}
else
{
Growl.Info(no_data_message);
}
}
catch (Exception ex) {
DataBaseHelper.rollback();
Console.WriteLine(ex.Message);
Growl.Error(save_fail_message);
}
}
/// <summary>
/// 删除配置响应
@ -190,7 +326,6 @@ public class LevelConfigVM : BaseViewModel
{
InstitutesEnabled = false;
ShapesEnabled = false;
Info info = null;
Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog();
openFileDialog.Filter = "Text files (*.enc)|*.enc|All files (*.*)|*.*";
if (openFileDialog.ShowDialog() == true)
@ -202,7 +337,6 @@ public class LevelConfigVM : BaseViewModel
content = AESHelper.DecryptFile(filename, "000000");
info = JsonConvert.DeserializeObject<Info>(content);
}
}
if (info != null)
{
@ -248,8 +382,6 @@ public class LevelConfigVM : BaseViewModel
DataTable standardInfos = Common.JsonToDataTable(standardInfosJson);
setStandardList(gradeInfos, standardInfos);
}
}
@ -258,10 +390,13 @@ public class LevelConfigVM : BaseViewModel
/// </summary>
/// <param name="param"></param>
public void ChangeInstituteModel(object param)
{
if (InstituteId != null && InstituteId != string.Empty)
{
dataGrid.Columns.Clear();
setDataGrid(ShapeId, InstituteId);
}
}
/// <summary>
/// 切换形状响应
@ -269,8 +404,10 @@ public class LevelConfigVM : BaseViewModel
/// <param name="param"></param>
public void ChangeShapeModel(object param)
{
if (ShapeId!= null && ShapeId != string.Empty) {
setInstitutes(ShapeId);
}
}
class Info
{
@ -293,6 +430,39 @@ public class LevelConfigVM : BaseViewModel
public string GRADE_EN_NAME { get; set; }
public string GRADE_EN_S_NAME { get; set; }
public int GRADE_ORDER { get; set; }
public string getInsertSql(string shapeId,string instituteId)
{
string insertSql = "INSERT INTO GRADE(";
insertSql = insertSql +
"SHAPE_ID" +
",INSTITUTE_ID" +
",GRADE_ID" +
",GRADE_NAME" +
",GRADE_EN_NAME" +
",GRADE_EN_S_NAME" +
",GRADE_ORDER" +
",GUID";
insertSql = insertSql + ")VALUES(";
insertSql = insertSql +
$"'{shapeId}'" +
$",'{instituteId}'" +
$",'{GRADE_ID}'" +
$",'{GRADE_NAME}'" +
$",'{GRADE_EN_NAME}'" +
$",'{GRADE_EN_S_NAME}'" +
$",'{GRADE_ORDER}'" +
$",'{Guid.NewGuid().ToString()}'";
insertSql = insertSql + ");";
return insertSql;
}
public string getDeleteSql(string shapeId, string instituteId)
{
string deleteSql = $"DELETE FROM GRADE WHERE SHAPE_ID='{shapeId}' AND INSTITUTE_ID='{instituteId}';";
return deleteSql;
}
}
class StandardInfo
@ -301,8 +471,8 @@ public class LevelConfigVM : BaseViewModel
public int STANDARD_ID { get; set; }
public string STANDARD_NAME { get; set; }
public string STANDARD_EN_NAME { get; set; }
public string STANDARD_MIN { get; set; }
public string STANDARD_MAX { get; set; }
public decimal? STANDARD_MIN { get; set; }
public decimal? STANDARD_MAX { get; set; }
public string IS_MIN_EXIST { get; set; } = "0";
public string IS_MAX_EXIST { get; set; } = "0";
public string UNIT { get; set; }
@ -313,5 +483,59 @@ public class LevelConfigVM : BaseViewModel
public string MIN_NULL_REPALCE { get; set; } = "←";
public string MAX_NULL_REPALCE { get; set; } = "→";
public int SORT { get; set; }
public string getInsertSql(string shapeId, string instituteId)
{
string insertSql = "INSERT INTO STANDARD(";
insertSql = insertSql +
"STANDARD_ID " +
",SHAPE_ID " +
",GRADE_ID " +
",INSTITUTE_ID " +
",STANDARD_NAME " +
",STANDARD_EN_NAME " +
",STANDARD_MIN " +
",STANDARD_MAX " +
",IS_MIN_EXIST " +
",IS_MAX_EXIST " +
",SORT " +
",UNIT " +
",MAX_NULL_REPALCE " +
",MIN_PREFIX " +
",MIN_SUFFIX " +
",MAX_PREFIX " +
",MAX_SUFFIX " +
",MIN_NULL_REPALCE " +
",GUID " ;
insertSql = insertSql + ")VALUES(";
insertSql = insertSql +
$"'{STANDARD_ID}'" +
$",'{shapeId}'" +
$",'{GRADE_ID}'" +
$",'{instituteId}'" +
$",'{STANDARD_NAME}'" +
$",'{STANDARD_EN_NAME}'" +
$",{(STANDARD_MIN != null ? STANDARD_MIN.ToString() : "null")}" +
$",{(STANDARD_MAX != null ? STANDARD_MAX.ToString() : "null")}" +
$",'{IS_MIN_EXIST}'" +
$",'{IS_MAX_EXIST}'" +
$",'{SORT}'" +
$",'{UNIT}'" +
$",'{MAX_NULL_REPALCE}'" +
$",'{MIN_PREFIX}'" +
$",'{MIN_SUFFIX}'" +
$",'{MAX_PREFIX}'" +
$",'{MAX_SUFFIX}'" +
$",'{MIN_NULL_REPALCE}'" +
$",'{Guid.NewGuid().ToString()}'";
insertSql = insertSql + ");";
return insertSql;
}
public string getDeleteSql(string shapeId, string instituteId)
{
string deleteSql = $"DELETE FROM STANDARD WHERE SHAPE_ID='{shapeId}' AND INSTITUTE_ID='{instituteId}';";
return deleteSql;
}
}
}

@ -22,24 +22,42 @@
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<ComboBox Grid.Column="0" Width="140" hc:DropDownElement.ConsistentWidth="False" SelectedIndex="0"
ItemsSource="{Binding Institutes, Mode=TwoWay}" Margin="10 0" DisplayMemberPath="INSTITUTE_NAME" SelectedValuePath="INSTITUTE_ID"
ItemsSource="{Binding Institutes}" Margin="10 0" DisplayMemberPath="{DynamicResource INSTITUTE_NAME}" SelectedValuePath="INSTITUTE_ID"
SelectedValue="{Binding InstituteId, Mode=TwoWay}"
SelectionChanged="ChangeInstitutes"
IsEnabled="{Binding InstitutesEnabled,Mode=TwoWay}"/>
<ComboBox Grid.Column="1" Width="140" hc:DropDownElement.ConsistentWidth="False" SelectedIndex="0"
ItemsSource="{Binding Shapes, Mode=TwoWay}" Margin="10 0" DisplayMemberPath="SHAPE_NAME" SelectedValuePath="SHAPE_ID"
ItemsSource="{Binding Shapes}" Margin="10 0" DisplayMemberPath="{DynamicResource SHAPE_NAME}" SelectedValuePath="SHAPE_ID"
SelectedValue="{Binding ShapeId, Mode=TwoWay}"
SelectionChanged="ChangeShapes"
IsEnabled="{Binding ShapesEnabled,Mode=TwoWay}"/>
<Button Grid.Column="2" Content="{DynamicResource Save}" Margin="10 0" />
<Button Grid.Column="3" Content="{DynamicResource DeleteConfig}" Margin="10 0" />
<Button Grid.Column="2" Content="{DynamicResource Save}" Margin="10 0" Command="{Binding SaveLevelConfigCommand}"/>
<!--<Button Grid.Column="3" Content="{DynamicResource DeleteConfig}" Margin="10 0" Command="{Binding DelLevelConfigCommand}"/>-->
<Button Grid.Column="5" Content="{DynamicResource ImportConfig}" Margin="10 0" HorizontalAlignment="Right" Command="{Binding LoadLevelConfigCommand}"
/>
</Grid>
<DataGrid Grid.Row="1" x:Name="DataGrid1" HeadersVisibility="All" RowHeaderWidth="60" AutoGenerateColumns="False" IsReadOnly="True"
ItemsSource="{Binding StandardList}" >
<DataGrid Grid.Row="1" x:Name="DataGrid1" HeadersVisibility="Column" RowHeaderWidth="60" AutoGenerateColumns="False" IsReadOnly="True"
ItemsSource="{Binding StandardList}">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="MinWidth" Value="150"/>
<Setter Property="BorderThickness" Value="1,1,1,1"/>
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderThickness" Value="1,1,1,1"/>
<Setter Property="BorderBrush" Value="Gray"/>
</Style>
</DataGrid.CellStyle>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
</DataGrid.RowStyle>
</DataGrid>
</Grid>
</Border>
Loading…
Cancel
Save