using System;
using CustomUI;
using System.Windows;
using System.Windows.Controls;
using SHJX.Service.Model.Control;
using SHJX.Service.Common.CustomUtil;
using SHJX.Service.Common.UserDelegate;
using System.Collections.Generic;
namespace SHJX.Service.Librarys.MainLibrarys
{
///
/// ModeSetting.xaml 的交互逻辑
///
public partial class ModeSetting : Window
{
public string SampleVolume
{
get => (string)GetValue(CenterTextProperty);
set => SetValue(CenterTextProperty, value);
}
public static readonly DependencyProperty CenterTextProperty =
DependencyProperty.Register(
nameof(SampleVolume), typeof(string),
typeof(ModeSetting), new UIPropertyMetadata("10", CenterTextChangedCallback));
private static void CenterTextChangedCallback(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
var control = obj as ModeSetting;
var sampleVolume = control?.TxtSampleNum;
var sampleMultiple = control?.TxtMultiple;
if (sampleVolume is null || sampleMultiple is null) return;
if (Convert.ToDouble(args.NewValue) <= 0 || Convert.ToDouble(args.NewValue) > 10)
{
sampleVolume.Text = args.OldValue.ToString();
return;
}
sampleVolume.Text = args.NewValue.ToString();
}
private string _detail;
public string CreateDetailInfo
{
get
{
if (string.IsNullOrWhiteSpace(_detail))
{
_detail = DateTime.Now.ToString("MMddmmss");
}
return _detail;
}
set => _detail = value;
}
private readonly string _opKey;
public ModeSetting(string detail, string color,string opKey)
{
var detailInfo = detail;
_opKey = opKey;
Owner = Application.Current.MainWindow;
InitializeComponent();
if (!(string.IsNullOrWhiteSpace(detailInfo)|| detailInfo=="补杯"))
{
txt_ModeDetail.Text = detailInfo;
}
CreateDetailInfo = DateTime.Now.ToString("MMddmmss");
if (color.ToLower() == "#ff99cc" || color.ToLower() == "#ffcccc")
{
btn_Sure.IsEnabled = false;
}
var detailArg = DataCache.Get(opKey);
if (detailArg is not null)
{
InitData(detailArg);
}
}
public void InitData(SampleDetail detailArgs)
{
txt_ModeDetail.Text = detailArgs.Detail;
SampleVolume = detailArgs.SampleVolume.ToString();
TxtMultiple.Text = detailArgs.Multiple.ToString();
txt_HgSO.Text = detailArgs.HgSO4.ToString();
foreach (SegmentItem item in cb_Mode.Items)
{
if (item.Content.Equals(detailArgs.SampleType))
{
cb_Mode.SelectedItem = item;
}
}
foreach (SegmentItem item in cb_Concentration.Items)
{
if (item.Content.Equals(detailArgs.Concentration))
{
cb_Concentration.SelectedItem = item;
}
}
cb_send.IsChecked = detailArgs.WhetherSend;
}
public ModeSetting()
{
Owner = Application.Current.MainWindow;
InitializeComponent();
}
private void Cancel_Click(object sender, RoutedEventArgs e)
{
Close();
}
private void cb_Mode_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
txt_ModeDetail.Text = ((SegmentItem)cb_Mode.SelectedItem).Content.ToString() switch
{
"水样" => CreateDetailInfo,
_ => (cb_Mode.SelectedItem as SegmentItem).Content.ToString(),
};
}
private void btn_Sure_Click(object sender, RoutedEventArgs e)
{
try
{
SampleDetail detailArgs = new SampleDetail()
{
NodeName = _opKey,
Detail = txt_ModeDetail.Text,
SampleVolume = Convert.ToDouble(TxtSampleNum.Text),
Multiple = Convert.ToDouble(TxtMultiple.Text),
HgSO4 = Convert.ToDouble(txt_HgSO.Text),
SampleType = ((SegmentItem)cb_Mode.SelectedItem).Content.ToString(),
Concentration = ((SegmentItem)cb_Concentration.SelectedItem).Content.ToString(),
QuickTitration = cb_quick.IsChecked != null && (bool)cb_quick.IsChecked,
WhetherSend = cb_send.IsChecked != null && (bool)cb_send.IsChecked
};
if (detailArgs.WhetherSend)
{
DataCache.Set(_opKey, detailArgs);
}
else
{
DataCache.Remove(_opKey);
}
Messager.Send("sample", detailArgs);
Close();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
private void TxtSampleNum_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (string.IsNullOrWhiteSpace(TxtSampleNum.Text))
{
TxtMultiple.Text = "0";
return;
}
TxtMultiple.Text = $"{10 / Convert.ToDouble(TxtSampleNum.Text):F2}";
}
catch (Exception)
{
throw;
}
}
}
}