master
sunhonglei 7 months ago
parent 14ff4fbc2c
commit c4d442ebd7
  1. 48
      ViewModel/Grading/DiamondSelectVM.cs
  2. 130
      ViewModel/Grading/GradingResultVM.cs
  3. 74
      Views/Dialog/JsonImport.xaml
  4. 108
      Views/Dialog/JsonImport.xaml.cs
  5. 2
      Views/Dialog/StartDialog.xaml.cs
  6. 43
      Views/Grading/GradingResult.xaml
  7. 10
      Views/Grading/GradingResult.xaml.cs

@ -6,7 +6,9 @@ using SparkClient.Views.Dialog;
using System;
using System.Diagnostics.Metrics;
using System.DirectoryServices.ActiveDirectory;
using System.IO;
using System.Reflection.Metadata;
using System.Text;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media.Imaging;
@ -96,17 +98,45 @@ public class DiamondSelectVM : BaseViewModel
Buttons2 = tempButtons2;
}
}
public void StartGrading(object param)
{
DoStartGrading(param);
}
/// <summary>
/// 开始检测(对soc和算法开始通讯)
/// </summary>
/// <param name="param"></param>
public async void StartGrading(object param)
public async void DoStartGrading(object param)
{
if (param != null)
{
AlgorithmResultEntity parameter = new AlgorithmResultEntity();
JsonImport jsonImport = new JsonImport();
bool? a = jsonImport.ShowDialog();
if (a ?? false)
{
string fileName = jsonImport.FilePath.Text;
string[] lines = File.ReadAllLines(fileName);
StringBuilder stringBuilder = new StringBuilder();
foreach (var line in lines)
{
stringBuilder.Append(line);
}
parameter = JsonConvert.DeserializeObject<AlgorithmResultEntity>(stringBuilder.ToString());
}
else
{
return;
}
LoadingDialog loading = new LoadingDialog();
var progressTask = Task.Run(() => Application.Current.Dispatcher.Invoke(() => loading.ShowDialog()));
var tcs = new TaskCompletionSource<bool>();
var progressTask = Task.Run(() => Application.Current.Dispatcher.Invoke(() => {
loading.Closed += (s, e) => tcs.SetResult(true);
loading.ShowDialog();
}
));
await Task.Run(async () =>
{
for (int i = 0; i <= 100; i++)
@ -121,12 +151,14 @@ public class DiamondSelectVM : BaseViewModel
});
}
SocResultEntity socResolt = new SocResultEntity();
AlgorithmResultEntity parameter = new AlgorithmResultEntity();
// 启动soc
socResolt = DoSoc();
// 启动算法
parameter = DoAlgorithm();
// SocResultEntity socResolt = new SocResultEntity();
// AlgorithmResultEntity parameter = new AlgorithmResultEntity();
// // 启动soc
// socResolt = DoSoc();
// // 启动算法
// parameter = DoAlgorithm();
//parameter = DoSoc();
parameter.Standard = "IGI 2024";
string value = param.ToString()??"";
if (value!= null && value.Split(" ").Length==3)

@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Reflection;
@ -26,7 +27,7 @@ public class GradingResultVM : BaseViewModel
private string _wight;
private string _cutLevelTotal;
private string _symLevelTotal;
public ICommand ChangeNormCommand { get; }
public ICommand ChangeSymCommand { get; }
public List<DataInfo> DtResults { get { return _dtResults; } set { _dtResults = value; OnPropertyChanged(nameof(DtResults)); } }
public string Standard { get { return _standard; } set { _standard = value; OnPropertyChanged(nameof(Standard)); } }
public string Shape { get { return _shape; } set { _shape = value; OnPropertyChanged(nameof(Shape)); } }
@ -48,7 +49,7 @@ public class GradingResultVM : BaseViewModel
/// <param name="result">检测结果</param>
public GradingResultVM(object result)
{
ChangeNormCommand = new RelayCommand(ChangeNorm);
ChangeSymCommand = new RelayCommand(ChangeSym);
if (result != null)
{
InitView(result as AlgorithmResultEntity);
@ -243,8 +244,8 @@ public class GradingResultVM : BaseViewModel
DataInfo info = new DataInfo();
info.TestItemId = "TOTAL_DEPTH";
info.TestItemName = GetName("TOTAL_DEPTH");
info.Avg = result.measurements.TOTAL_DEPTH.ToString(digitsFormat);
info.CutLevel = calGrade_TOTAL_DEPTH(result.measurements.TOTAL_DEPTH);
info.Avg = Math.Floor(result.measurements.TOTAL_DEPTH*100).ToString(digitsFormat);
info.CutLevel = calGrade_TOTAL_DEPTH(result.measurements.TOTAL_DEPTH * 100);
return info;
}
@ -253,9 +254,9 @@ public class GradingResultVM : BaseViewModel
DataInfo info = new DataInfo();
info.TestItemId = "TABLE";
info.TestItemName = GetName("TABLE");
info.Avg = result.measurements.TABLE.ToString(digitsFormat);
info.Min = result.measurements.TABLE_MIN.ToString(digitsFormat);
info.Max = result.measurements.TABLE_MAX.ToString(digitsFormat);
info.Avg = Math.Floor(result.measurements.TABLE * 100).ToString(digitsFormat);
info.Min = Math.Floor(result.measurements.TABLE_MIN * 100).ToString(digitsFormat);
info.Max = Math.Floor(result.measurements.TABLE_MAX * 100).ToString(digitsFormat);
info.CutLevel = calGrade_TABLE(result.measurements.TABLE_MIN, result.measurements.TABLE_MAX);
return info;
}
@ -278,10 +279,10 @@ public class GradingResultVM : BaseViewModel
DataInfo info = new DataInfo();
info.TestItemId = "CROWN_HEIGHT";
info.TestItemName = GetName("CROWN_HEIGHT");
info.Avg = result.measurements.CROWN_HEIGHT.ToString(digitsFormat);
info.Dev = result.measurements.CROWN_H_DEV.ToString(digitsFormat);
info.Min = result.measurements.CROWN_H_MIN.ToString(digitsFormat);
info.Max = result.measurements.CROWN_H_MAX.ToString(digitsFormat);
info.Avg = Math.Floor(result.measurements.CROWN_HEIGHT * 100).ToString(digitsFormat);
info.Dev = Math.Floor(result.measurements.CROWN_H_DEV * 100).ToString(digitsFormat);
info.Min = Math.Floor(result.measurements.CROWN_H_MIN * 100).ToString(digitsFormat);
info.Max = Math.Floor(result.measurements.CROWN_H_MAX * 100).ToString(digitsFormat);
info.CutLevel = calGrade_CROWN_HEIGHT(result.measurements.CROWN_H_MIN, result.measurements.CROWN_H_MAX);
return info;
}
@ -291,10 +292,10 @@ public class GradingResultVM : BaseViewModel
DataInfo info = new DataInfo();
info.TestItemId = "GIRDLE_BEZEL";
info.TestItemName = GetName("GIRDLE_BEZEL");
info.Avg = result.measurements.GIRDLE_BEZEL.ToString(digitsFormat);
info.Dev = result.measurements.GIRDLE_BEZEL_DEV.ToString(digitsFormat);
info.Min = result.measurements.GIRDLE_BEZEL_MIN.ToString(digitsFormat);
info.Max = result.measurements.GIRDLE_BEZEL_MAX.ToString(digitsFormat);
info.Avg = Math.Floor(result.measurements.GIRDLE_BEZEL * 100).ToString(digitsFormat);
info.Dev = Math.Floor(result.measurements.GIRDLE_BEZEL_DEV * 100).ToString(digitsFormat);
info.Min = Math.Floor(result.measurements.GIRDLE_BEZEL_MIN * 100).ToString(digitsFormat);
info.Max = Math.Floor(result.measurements.GIRDLE_BEZEL_MAX * 100).ToString(digitsFormat);
return info;
}
@ -303,9 +304,9 @@ public class GradingResultVM : BaseViewModel
DataInfo info = new DataInfo();
info.TestItemId = "GIRDLE_BONE";
info.TestItemName = GetName("GIRDLE_BONE");
info.Avg = result.measurements.GIRDLE_BONE.ToString(digitsFormat);
info.Min = result.measurements.GIRDLE_BONE_MIN.ToString(digitsFormat);
info.Max = result.measurements.GIRDLE_BONE_MAX.ToString(digitsFormat);
info.Avg = Math.Floor(result.measurements.GIRDLE_BONE * 100).ToString(digitsFormat);
info.Min = Math.Floor(result.measurements.GIRDLE_BONE_MIN * 100).ToString(digitsFormat);
info.Max = Math.Floor(result.measurements.GIRDLE_BONE_MAX * 100).ToString(digitsFormat);
return info;
}
@ -314,10 +315,10 @@ public class GradingResultVM : BaseViewModel
DataInfo info = new DataInfo();
info.TestItemId = "GIRDLE";
info.TestItemName = GetName("GIRDLE");
info.Avg = result.measurements.GIRDLE.ToString(digitsFormat);
info.Dev = result.measurements.GIRDLE_DEV.ToString(digitsFormat);
info.Min = result.measurements.GIRDLE_MIN.ToString(digitsFormat);
info.Max = result.measurements.GIRDLE_MAX.ToString(digitsFormat);
info.Avg = Math.Floor(result.measurements.GIRDLE * 100).ToString(digitsFormat);
info.Dev = Math.Floor(result.measurements.GIRDLE_DEV * 100).ToString(digitsFormat);
info.Min = Math.Floor(result.measurements.GIRDLE_MIN * 100).ToString(digitsFormat);
info.Max = Math.Floor(result.measurements.GIRDLE_MAX * 100).ToString(digitsFormat);
info.CutLevel = calGrade_GIRDLE(result.measurements.GIRDLE_MIN, result.measurements.GIRDLE_MAX);
return info;
}
@ -340,10 +341,10 @@ public class GradingResultVM : BaseViewModel
DataInfo info = new DataInfo();
info.TestItemId = "PAV_DEPTH";
info.TestItemName = GetName("PAV_DEPTH");
info.Avg = result.measurements.PAV_DEPTH.ToString(digitsFormat);
info.Dev = result.measurements.PAV_DEPTH_DEV.ToString(digitsFormat);
info.Min = result.measurements.PAV_DEPTH_MIN.ToString(digitsFormat);
info.Max = result.measurements.PAV_DEPTH_MAX.ToString(digitsFormat);
info.Avg = Math.Floor(result.measurements.PAV_DEPTH * 100).ToString(digitsFormat);
info.Dev = Math.Floor(result.measurements.PAV_DEPTH_DEV * 100).ToString(digitsFormat);
info.Min = Math.Floor(result.measurements.PAV_DEPTH_MIN * 100).ToString(digitsFormat);
info.Max = Math.Floor(result.measurements.PAV_DEPTH_MAX * 100).ToString(digitsFormat);
info.CutLevel = calGrade_PAV_DEPTH(result.measurements.PAV_DEPTH_MIN, result.measurements.PAV_DEPTH_MAX);
return info;
}
@ -353,9 +354,9 @@ public class GradingResultVM : BaseViewModel
DataInfo info = new DataInfo();
info.TestItemId = "STAR";
info.TestItemName = GetName("STAR");
info.Avg = result.measurements.STAR.ToString(digitsFormat);
info.Min = result.measurements.STAR_MIN.ToString(digitsFormat);
info.Max = result.measurements.STAR_MAX.ToString(digitsFormat);
info.Avg = Math.Floor(result.measurements.STAR * 100).ToString(digitsFormat);
info.Min = Math.Floor(result.measurements.STAR_MIN * 100).ToString(digitsFormat);
info.Max = Math.Floor(result.measurements.STAR_MAX * 100).ToString(digitsFormat);
return info;
}
@ -364,9 +365,9 @@ public class GradingResultVM : BaseViewModel
DataInfo info = new DataInfo();
info.TestItemId = "LOWER_HALVES_RATIO";
info.TestItemName = GetName("LOWER_HALVES_RATIO");
info.Avg = result.measurements.LOWER_HALVES_RATIO.ToString(digitsFormat);
info.Min = result.measurements.LOWER_HALVES_RATIO_MIN.ToString(digitsFormat);
info.Max = result.measurements.LOWER_HALVES_RATIO_MAX.ToString(digitsFormat);
info.Avg = Math.Floor(result.measurements.LOWER_HALVES_RATIO * 100).ToString(digitsFormat);
info.Min = Math.Floor(result.measurements.LOWER_HALVES_RATIO_MIN * 100).ToString(digitsFormat);
info.Max = Math.Floor(result.measurements.LOWER_HALVES_RATIO_MAX * 100).ToString(digitsFormat);
return info;
}
@ -375,7 +376,7 @@ public class GradingResultVM : BaseViewModel
DataInfo info = new DataInfo();
info.TestItemId = "CULET";
info.TestItemName = GetName("CULET");
info.Avg = result.measurements.CULET.ToString(digitsFormat);
info.Avg = Math.Floor(result.measurements.CULET * 100).ToString(digitsFormat);
return info;
}
@ -384,7 +385,7 @@ public class GradingResultVM : BaseViewModel
DataInfo info = new DataInfo();
info.TestItemId = "TOC";
info.TestItemName = GetName("TOC");
info.Avg = result.measurements.TOC.ToString(digitsFormat);
info.Avg = Math.Floor(result.measurements.TOC * 100).ToString(digitsFormat);
return info;
}
@ -393,7 +394,7 @@ public class GradingResultVM : BaseViewModel
DataInfo info = new DataInfo();
info.TestItemId = "COC";
info.TestItemName = GetName("COC");
info.Avg = result.measurements.COC.ToString(digitsFormat);
info.Avg = Math.Floor(result.measurements.COC * 100).ToString(digitsFormat);
return info;
}
@ -402,10 +403,10 @@ public class GradingResultVM : BaseViewModel
DataInfo info = new DataInfo();
info.TestItemId = "TWIST";
info.TestItemName = GetName("TWIST");
info.Avg = result.measurements.TWIST.ToString(digitsFormat);
info.Dev = result.measurements.TWIST_DEV.ToString(digitsFormat);
info.Min = result.measurements.TWIST_MIN.ToString(digitsFormat);
info.Max = result.measurements.TWIST_MAX.ToString(digitsFormat);
info.Avg = Math.Floor(result.measurements.TWIST * 100).ToString(digitsFormat);
info.Dev = Math.Floor(result.measurements.TWIST_DEV * 100).ToString(digitsFormat);
info.Min = Math.Floor(result.measurements.TWIST_MIN * 100).ToString(digitsFormat);
info.Max = Math.Floor(result.measurements.TWIST_MAX * 100).ToString(digitsFormat);
return info;
}
@ -414,7 +415,7 @@ public class GradingResultVM : BaseViewModel
DataInfo info = new DataInfo();
info.TestItemId = "CULET_TO_TABLE";
info.TestItemName = GetName("CULET_TO_TABLE");
info.Avg = result.measurements.CULET_TO_TABLE.ToString(digitsFormat);
info.Avg = Math.Floor(result.measurements.CULET_TO_TABLE * 100).ToString(digitsFormat);
return info;
}
#endregion
@ -435,7 +436,25 @@ public class GradingResultVM : BaseViewModel
private string GetName(string id)
{
// TODO DB没关联
return id;
Dictionary<string, string> dictionary = new();
dictionary.Add("DIAMETER", "直径");
dictionary.Add("TOTAL_DEPTH", "全深比");
dictionary.Add("TABLE", "台宽比");
dictionary.Add("CROWN_ANGLE", "冠角");
dictionary.Add("CROWN_HEIGHT", "冠高比");
dictionary.Add("GIRDLE_BEZEL", "波峰(风筝面)");
dictionary.Add("GIRDLE_BONE", "波峰(上腰面)");
dictionary.Add("GIRDLE", "腰厚比");
dictionary.Add("PAV_ANGLE", "亭角");
dictionary.Add("PAV_DEPTH", "亭深比");
dictionary.Add("STAR", "星刻面长度比");
dictionary.Add("LOWER_HALVES_RATIO", "下腰比");
dictionary.Add("CULET", "底尖比");
dictionary.Add("TOC", "台面偏心比");
dictionary.Add("COC", "底尖偏心比");
dictionary.Add("TWIST", "扭曲度");
dictionary.Add("CULET_TO_TABLE", "底尖到台面偏心比");
return dictionary[id];
}
private string GetGradeName(int order)
{
@ -449,12 +468,20 @@ public class GradingResultVM : BaseViewModel
return dictionary[order];
}
/// <summary>
/// 修改检测标准
/// 修改对称性等级
/// </summary>
/// <param name="norm"></param>
public void ChangeNorm(object norm)
public void ChangeSym(object norm)
{
int? order = this.DtResults.Select(x => x.SymLevel).Max();
if (order.HasValue)
{
SymLevelTotal = GetGradeName((int)order.Value);
}
else
{
SymLevelTotal = string.Empty;
}
}
private void InitCombobox()
@ -496,7 +523,7 @@ public class CalGradeInfo{
public int isMaxExist { get; set; }
public int isMinExist { get; set; }
}
public class DataInfo()
public class DataInfo() : BaseViewModel
{
public string? TestItemId { get; set; }
public string? TestItemName { get; set; }
@ -505,17 +532,18 @@ public class DataInfo()
public string? Min { get; set; }
public string? Max { get; set; }
public string? CutLevel { get; set; }
public string? SymLevel { get; set; }
private int? _symLevel;
public int? SymLevel { get { return _symLevel; } set { _symLevel = value; OnPropertyChanged(nameof(SymLevel)); }}
public DataTable GradeList { get {
// TODO DB没关联
DataTable GradeList = new DataTable();
GradeList.Columns.Add("Key");
GradeList.Columns.Add("Value");
GradeList.Rows.Add("极好", "1");
GradeList.Rows.Add("很好", "2");
GradeList.Rows.Add("好", "3");
GradeList.Rows.Add("一般", "4");
GradeList.Rows.Add("差", "5");
GradeList.Rows.Add("极好", 1);
GradeList.Rows.Add("很好", 2);
GradeList.Rows.Add("好", 3);
GradeList.Rows.Add("一般", 4);
GradeList.Rows.Add("差", 5);
return GradeList;
}
}

@ -0,0 +1,74 @@
<Window x:Class="SparkClient.Views.Dialog.JsonImport"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:SparkClient.Views.Dialog"
mc:Ignorable="d"
Title="JsonImport" Height="450" Width="800"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
WindowStyle="None" AllowsTransparency="True" Background="Transparent">
<Border CornerRadius="15" Background="White" x:Name="Border" >
<Grid ClipToBounds="True">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<!-- 模拟顶部标题栏 -->
<Grid Grid.Row="0" Background="#795C2A" Height="40">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<!-- 关闭按钮 -->
<Border Grid.Column="2"
Width="40" Height="30"
Margin=" 0 0 10 0"
HorizontalAlignment="Right" VerticalAlignment="Center"
Background="Transparent"
MouseEnter="Border_Close_MouseEnter"
MouseLeave="Border_MouseLeave">
<Button Background="Transparent" BorderBrush="Transparent" Click="Close_Click">
<Viewbox Stretch="Uniform">
<Path Data="{StaticResource CloseGeometry}"
Fill="Azure"
Stroke="Azure"
StrokeThickness="1"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="20 0 0 0"
Width="30" />
</Viewbox>
</Button>
</Border>
</Grid>
<StackPanel Grid.Row="1" VerticalAlignment="Center" >
<Grid Height="30" Margin="0 10 0 10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="5*" />
<ColumnDefinition Width="9*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Column="1" HorizontalAlignment="right" Content="Json路径" Background="Transparent"
BorderBrush="Transparent"
FontSize="16" FontFamily="AlibabaPuHui-regular" />
<TextBox TextWrapping="Wrap" x:Name ="FilePath" Grid.Column="2" IsReadOnly="True"/>
<Button Grid.Column="3" Content="浏览" HorizontalAlignment="Left" Click="open_Click"/>
</Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Grid.Column="2" Content="{DynamicResource ok}" HorizontalAlignment="Center" Click="Ok_Click" />
<Button Grid.Column="3" Content="{DynamicResource Skip}" HorizontalAlignment="Center" Click="Close_Click" />
</Grid>
</StackPanel>
</Grid>
</Border>
</Window>

@ -0,0 +1,108 @@
using HandyControl.Controls;
using Newtonsoft.Json;
using SparkClient.Model.Helper;
using SparkClient.ViewModel;
using SparkClient.ViewModel.Dialog;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
namespace SparkClient.Views.Dialog
{
/// <summary>
/// JsonImport.xaml 的交互逻辑
/// </summary>
public partial class JsonImport
{
public BaseViewModel ViewModel = null;
public JsonImport()
{
InitializeComponent();
WindowStartupLocation = WindowStartupLocation.CenterScreen;
// 动态设置圆角裁剪
this.Loaded += (s, e) => ApplyCornerRadiusClip();
this.SizeChanged += (s, e) => ApplyCornerRadiusClip(); // 保证在大小改变时也裁剪
this.Width = 562;
this.Height = 222;
this.ViewModel = new StartDialogVM();
this.DataContext = this.ViewModel;
}
#region 重写窗体操作按钮
private void Border_Close_MouseEnter(object sender, MouseEventArgs e)
{
// 鼠标进入时更改背景色
if (sender is Border border)
{
border.Background = new SolidColorBrush(Color.FromArgb(50, 255, 0, 0));
}
}
private void Border_MouseLeave(object sender, MouseEventArgs e)
{
// 鼠标离开时恢复背景色
if (sender is Border border)
{
border.Background = new SolidColorBrush(Colors.Transparent);
}
}
private void UIElement_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
try
{
this.DragMove();
}
catch (InvalidOperationException ex)
{
}
}
}
#endregion
private void Close_Click(object sender, RoutedEventArgs e)
{
DialogResult = false;
this.Close();
}
private void open_Click(object sender, RoutedEventArgs e)
{
Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog();
openFileDialog.Filter = "Text files (*.json)|*.json|All files (*.*)|*.*";
if (openFileDialog.ShowDialog() == true)
{
string filename = openFileDialog.FileName;
if (File.Exists(filename))
{
FilePath.Text = filename;
}
}
}
private void Ok_Click(object sender, RoutedEventArgs e)
{
if (FilePath.Text.Trim().Length > 0) {
DialogResult = true;
this.Close();
}
else
{
Growl.Error("请选择导入json文件");
}
}
private void ApplyCornerRadiusClip()
{
// 使用矩形几何生成圆角裁剪
this.Border.Clip = new RectangleGeometry
{
Rect = new Rect(0, 0, this.Border.ActualWidth, this.Border.ActualHeight),
RadiusX = this.Border.CornerRadius.TopLeft, // 使用 Border 的 CornerRadius
RadiusY = this.Border.CornerRadius.TopLeft
};
}
}
}

@ -1,9 +1,7 @@
using HandyControl.Controls;
using SparkClient.Model.Helper;
using SparkClient.ViewModel;
using SparkClient.ViewModel.BaseWindow;
using SparkClient.ViewModel.Dialog;
using SparkClient.ViewModel.Grading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;

@ -103,20 +103,43 @@
</Grid>
</Border>
<Border Grid.Row="1" Grid.Column="0" Background="Aqua">
<DataGrid HeadersVisibility="All" AutoGenerateColumns="False" ItemsSource="{Binding DtResults}" SelectionChanged="DataGrid_SelectionChanged">
<Border Grid.Row="1" Grid.Column="0">
<DataGrid HeadersVisibility="Column" AutoGenerateColumns="False" ItemsSource="{Binding DtResults}" CanUserResizeColumns="False" CanUserResizeRows="False">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="MinWidth" Value="120"/>
<Setter Property="BorderThickness" Value="1,1,1,1"/>
<Setter Property="BorderBrush" Value="#BBBBBB"/>
<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="#BBBBBB"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
</DataGrid.CellStyle>
<DataGrid.Resources>
<Style x:Key="CenteredTextBlockStyle" TargetType="TextBlock">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn MinWidth="120" IsReadOnly="True" Header="" Binding="{Binding TestItemName}"/>
<DataGridTextColumn MinWidth="120" IsReadOnly="True" Header="{DynamicResource resAvg}" Binding="{Binding Avg}"/>
<DataGridTextColumn MinWidth="120" IsReadOnly="True" Header="{DynamicResource resDev}" Binding="{Binding Dev}" />
<DataGridTextColumn MinWidth="120" IsReadOnly="True" Header="{DynamicResource resMin}" Binding="{Binding Min}" />
<DataGridTextColumn MinWidth="120" IsReadOnly="True" Header="{DynamicResource resMax}" Binding="{Binding Max}"/>
<DataGridTextColumn MinWidth="120" IsReadOnly="True" Header="{DynamicResource CutLevel}" Binding="{Binding CutLevel}"/>
<DataGridTemplateColumn MinWidth="120" Header="{DynamicResource resLevel}">
<DataGridTextColumn Width="*" IsReadOnly="True" Header="" Binding="{Binding TestItemName}" ElementStyle="{StaticResource CenteredTextBlockStyle}"/>
<DataGridTextColumn Width="*" IsReadOnly="True" Header="{DynamicResource resAvg}" Binding="{Binding Avg}" ElementStyle="{StaticResource CenteredTextBlockStyle}"/>
<DataGridTextColumn Width="*" IsReadOnly="True" Header="{DynamicResource resDev}" Binding="{Binding Dev}" ElementStyle="{StaticResource CenteredTextBlockStyle}"/>
<DataGridTextColumn Width="*" IsReadOnly="True" Header="{DynamicResource resMin}" Binding="{Binding Min}" ElementStyle="{StaticResource CenteredTextBlockStyle}"/>
<DataGridTextColumn Width="*" IsReadOnly="True" Header="{DynamicResource resMax}" Binding="{Binding Max}" ElementStyle="{StaticResource CenteredTextBlockStyle}"/>
<DataGridTextColumn Width="*" IsReadOnly="True" Header="{DynamicResource CutLevel}" Binding="{Binding CutLevel}" ElementStyle="{StaticResource CenteredTextBlockStyle}"/>
<DataGridTemplateColumn Width="*" Header="{DynamicResource resLevel}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding GradeList}"
DisplayMemberPath="Key" SelectedValuePath="Value" SelectedValue="{Binding SymLevel, Mode=TwoWay}"/>
DisplayMemberPath="Key" SelectedValuePath="Value" SelectedValue="{Binding SymLevel, Mode=TwoWay}" SelectionChanged="ChangSymLevel"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

@ -120,13 +120,9 @@ public partial class GradingResult
// }
}
private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
private void ChangSymLevel(object sender, SelectionChangedEventArgs e)
{
}
private void DataGrid_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{
var d = DataContext as GradingResultVM;
d.ChangeSym(null);
}
}
Loading…
Cancel
Save