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; } } } }