diff --git a/ViewModel/Grading/DiamondSelectVM.cs b/ViewModel/Grading/DiamondSelectVM.cs
index cf5a7c7..2d25edb 100644
--- a/ViewModel/Grading/DiamondSelectVM.cs
+++ b/ViewModel/Grading/DiamondSelectVM.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);
+ }
///
/// 开始检测(对soc和算法开始通讯)
///
///
- 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(stringBuilder.ToString());
+ }
+ else
+ {
+ return;
+ }
LoadingDialog loading = new LoadingDialog();
- var progressTask = Task.Run(() => Application.Current.Dispatcher.Invoke(() => loading.ShowDialog()));
+ var tcs = new TaskCompletionSource();
+ 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)
diff --git a/ViewModel/Grading/GradingResultVM.cs b/ViewModel/Grading/GradingResultVM.cs
index 9fda292..f57db76 100644
--- a/ViewModel/Grading/GradingResultVM.cs
+++ b/ViewModel/Grading/GradingResultVM.cs
@@ -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 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
/// 检测结果
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 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];
}
///
- /// 修改检测标准
+ /// 修改对称性等级
///
///
- 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;
}
}
diff --git a/Views/Dialog/JsonImport.xaml b/Views/Dialog/JsonImport.xaml
new file mode 100644
index 0000000..27dbf80
--- /dev/null
+++ b/Views/Dialog/JsonImport.xaml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Views/Dialog/JsonImport.xaml.cs b/Views/Dialog/JsonImport.xaml.cs
new file mode 100644
index 0000000..42478f9
--- /dev/null
+++ b/Views/Dialog/JsonImport.xaml.cs
@@ -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
+{
+ ///
+ /// JsonImport.xaml 的交互逻辑
+ ///
+ 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
+ };
+ }
+ }
+}
diff --git a/Views/Dialog/StartDialog.xaml.cs b/Views/Dialog/StartDialog.xaml.cs
index 4917034..a83c2d8 100644
--- a/Views/Dialog/StartDialog.xaml.cs
+++ b/Views/Dialog/StartDialog.xaml.cs
@@ -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;
diff --git a/Views/Grading/GradingResult.xaml b/Views/Grading/GradingResult.xaml
index 95da7ad..dda0ce0 100644
--- a/Views/Grading/GradingResult.xaml
+++ b/Views/Grading/GradingResult.xaml
@@ -103,20 +103,43 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+ DisplayMemberPath="Key" SelectedValuePath="Value" SelectedValue="{Binding SymLevel, Mode=TwoWay}" SelectionChanged="ChangSymLevel"/>
diff --git a/Views/Grading/GradingResult.xaml.cs b/Views/Grading/GradingResult.xaml.cs
index 2b72af7..2f7fb2d 100644
--- a/Views/Grading/GradingResult.xaml.cs
+++ b/Views/Grading/GradingResult.xaml.cs
@@ -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);
}
}
\ No newline at end of file