using DataEntity; using NPOI.OpenXmlFormats.Vml; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using XCommon.Log; using XHandler.Class; using XHandler.Class.DataEx; using XHandler.Controls; using XHandler.View.Com; using XImagingXhandler.XDAL; using DataRWDAL; namespace XHandler.View.Consumables { /// /// PlateSetting.xaml 的交互逻辑 /// public partial class PlateSetting : UserControl { public ConsumableManagement consumableManagement = null; public Labware labware { get; set; } public ObservableCollection CentrifugalLabwareList = LabwareDB.GetCentrifugalLabwareFromdb();//离心管耗材 public PlateSetting() { InitializeComponent(); InitializeData(); } public PlateSetting(Labware l) { InitializeComponent(); labware = l; InitializeData(); gdWellType.Visibility = Visibility.Collapsed; //控制板架属性 if (labware.labware_type_id == "4") { gdWellType.Visibility = Visibility.Visible; if (l.labware_tubeshelf_type.Equals(1)) { checkBoxWellType.IsChecked= true; gdPlateTubeInfo.Visibility = Visibility.Visible; gdPlateBaseInfo.Visibility = Visibility.Collapsed; } else { checkBoxWellType.IsChecked = false; gdPlateTubeInfo.Visibility = Visibility.Collapsed; gdPlateBaseInfo.Visibility = Visibility.Visible; } labwareWellInfos = LabwareDB.GetSpecialLabwareWellInfo(labware.labware_id); //CentrifugalLabwareList = LabwareDB.GetCentrifugalLabwareFromdb(); //foreach(LabwareWellInfo labwareWellInfo in labwareWellInfos) //{ // if(labwareWellInfo.labware_well_shape.Equals(1)) // { // labwareWellInfo.labware_well_shape = 0; // } // else if (labwareWellInfo.labware_well_shape.Equals(2)) // { // labwareWellInfo.labware_well_shape = 1; // } //} labware.labwareWellInfoList = labwareWellInfos; dgPointListData.ItemsSource = labwareWellInfos; dgPointListData.DataContext = labwareWellInfos; cbxLabware.ItemsSource = CentrifugalLabwareList; } else { gdPlateTubeInfo.Visibility = Visibility.Collapsed; gdPlateBaseInfo.Visibility = Visibility.Visible; } this.DataContext = labware; } private void InitializeData() { List wellShapeList = new List(); wellShapeList.Add(Properties.Resources.strPleaseSelect); wellShapeList.Add(Properties.Resources.strCylinder); wellShapeList.Add(Properties.Resources.strCuboid); cbWellShape.ItemsSource = wellShapeList; List bottomShapeList = new List(); bottomShapeList.Add(Properties.Resources.strPleaseSelect); bottomShapeList.Add(Properties.Resources.strTaper); bottomShapeList.Add(Properties.Resources.strHalfBall); bottomShapeList.Add(Properties.Resources.strFlat); bottomShapeList.Add(Properties.Resources.strPyramid); cbBottomShape.ItemsSource = bottomShapeList; } private void AddGapLabware(int gap) { gridGapLabware.Children.Clear(); GapLabware labware = new GapLabware() { Width = 200, GapWidth = 15, LabwareGap = gap, HorizontalAlignment = HorizontalAlignment.Left, }; gridGapLabware.Children.Add(labware); } private void UserControl_Loaded(object sender, RoutedEventArgs e) { checkboxWN.IsChecked = true; if (labware == null) return; nGap = 0; if (labware.nw == 1) { checkboxWN.IsChecked = true; nGap = nGap | GapLabware.WN; } if (labware.sw == 1) { checkboxWS.IsChecked = true; nGap = nGap | GapLabware.WS; } if (labware.ne == 1) { checkboxEN.IsChecked = true; nGap = nGap | GapLabware.EN; } if (labware.se == 1) { checkboxES.IsChecked = true; nGap = nGap | GapLabware.ES; } AddGapLabware(nGap); btnLeftSideColor.RGB = labware.labware_color_lside; // 左侧 btnWideColor.RGB = labware.labware_color_front; // 前侧 btnTopColor.RGB = labware.labware_color_top; // 顶面 btnLineColor.RGB = labware.labware_color_line; // 边框线 cbWellShape.SelectedIndex = Convert.ToInt16(labware.well_shape); cbBottomShape.SelectedIndex = Convert.ToInt16(labware.well_bottom_shape); int count = (int)labware.number_row * (int)labware.number_column; textboxWellCount.Text = count.ToString(); } int nGap = 0; private void CheckBox_Checked(object sender, RoutedEventArgs e) { if (labware == null) return; CheckBox btn = (CheckBox)sender; if (checkboxWN.IsChecked == true) { nGap = nGap | GapLabware.WN; labware.nw = 1; } else { nGap = nGap & 14; labware.nw = 0; } if (checkboxWS.IsChecked == true) { nGap = nGap | GapLabware.WS; labware.sw = 1; } else { nGap = nGap & 13; labware.sw = 0; } if (checkboxEN.IsChecked == true) { nGap = nGap | GapLabware.EN; labware.ne = 1; } else { nGap = nGap & 11; labware.ne = 0; } if (checkboxES.IsChecked == true) { nGap = nGap | GapLabware.ES; labware.se = 1; } else { nGap = nGap & 7; labware.se = 0; } AddGapLabware(nGap); if (consumableManagement != null) { var a = consumableManagement.lvConsumable.SelectedItem as Labware; a = labware; } } private void CheckBox_UNChecked(object sender, RoutedEventArgs e) { if (labware == null) return; CheckBox btn = (CheckBox)sender; int nGap = 0; if (checkboxWN.IsChecked == true) { nGap = nGap | GapLabware.WN; labware.nw = 1; } else { nGap = nGap & 14; labware.nw = 0; } if (checkboxWS.IsChecked == true) { nGap = nGap | GapLabware.WS; labware.sw = 1; } else { nGap = nGap & 13; labware.sw = 0; } if (checkboxEN.IsChecked == true) { nGap = nGap | GapLabware.EN; labware.ne = 1; } else { nGap = nGap & 11; labware.ne = 0; } if (checkboxES.IsChecked == true) { nGap = nGap | GapLabware.ES; labware.se = 1; } else { nGap = nGap & 7; labware.se = 0; } AddGapLabware(nGap); if (consumableManagement != null) { var a = consumableManagement.lvConsumable.SelectedItem as Labware; a = labware; } } #region 宽边颜色 private void btnWideColor_SelectedColorChangedEvent(object sender, EventArgs e) { if (labware == null) { return; } labware.labware_color_front = btnWideColor.RGB; if (consumableManagement != null) { consumableManagement.lvConsumable.SelectedItem = labware; } } #endregion #region 窄边颜色 private void btnLeftSideColor_SelectedColorChangedEvent(object sender, EventArgs e) { if (labware == null) { return; } labware.labware_color_lside = btnLeftSideColor.RGB; if (consumableManagement != null) { consumableManagement.lvConsumable.SelectedItem = labware; } } #endregion #region 顶部颜色 private void btnTopColor_SelectedColorChangedEvent(object sender, EventArgs e) { if (labware == null) { return; } labware.labware_color_top = btnTopColor.RGB; if (consumableManagement != null) { consumableManagement.lvConsumable.SelectedItem = labware; } } #endregion #region 边线颜色 private void btnLineColor_SelectedColorChangedEvent(object sender, EventArgs e) { if (labware == null) { return; } labware.labware_color_line = btnLineColor.RGB; } #endregion private void cbWellShape_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (cbWellShape.SelectedIndex <= 0) { cbWellShape.BorderThickness = new Thickness(1); return; } else { cbWellShape.BorderThickness = new Thickness(0); } if (labware == null) return; labware.well_shape = cbWellShape.SelectedIndex; if (cbWellShape.SelectedIndex == (int)WellShape.Cylinder) { imgWellShape.Source = BitmapFrame.Create(new Uri("pack://application:,,,./Assets/Consumables/圆桶.png"), BitmapCreateOptions.None, BitmapCacheOption.OnLoad); gridCylinder.Visibility = Visibility.Visible; gridCuboid.Visibility = Visibility.Collapsed; } else if (cbWellShape.SelectedIndex == (int)WellShape.Cuboid) { imgWellShape.Source = BitmapFrame.Create(new Uri("pack://application:,,,./Assets/Consumables/正方形.png"), BitmapCreateOptions.None, BitmapCacheOption.OnLoad); gridCylinder.Visibility = Visibility.Collapsed; gridCuboid.Visibility = Visibility.Visible; } } private void cbBottomShape_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (cbBottomShape.SelectedIndex <= 0) { cbBottomShape.BorderThickness = new Thickness(1); return; } else { cbBottomShape.BorderThickness = new Thickness(0); } if (labware == null) return; labware.well_bottom_shape = cbBottomShape.SelectedIndex; if (cbBottomShape.SelectedIndex == (int)BottomShape.Taper) { imgWellBottomShape.Source = BitmapFrame.Create(new Uri("pack://application:,,,./Assets/Consumables/倒锥.png"), BitmapCreateOptions.None, BitmapCacheOption.OnLoad); gridTaper.Visibility = Visibility.Visible; gridHalfBall.Visibility = Visibility.Collapsed; gridFlat.Visibility = Visibility.Collapsed; gridPyramid.Visibility = Visibility.Collapsed; } else if (cbBottomShape.SelectedIndex == (int)BottomShape.HalfBall) { imgWellBottomShape.Source = BitmapFrame.Create(new Uri("pack://application:,,,./Assets/Consumables/半圆.png"), BitmapCreateOptions.None, BitmapCacheOption.OnLoad); gridTaper.Visibility = Visibility.Collapsed; gridHalfBall.Visibility = Visibility.Visible; gridFlat.Visibility = Visibility.Collapsed; gridPyramid.Visibility = Visibility.Collapsed; } else if (cbBottomShape.SelectedIndex == (int)BottomShape.Flat) { imgWellBottomShape.Source = BitmapFrame.Create(new Uri("pack://application:,,,./Assets/Consumables/正方形.png"), BitmapCreateOptions.None, BitmapCacheOption.OnLoad); gridTaper.Visibility = Visibility.Collapsed; gridHalfBall.Visibility = Visibility.Collapsed; gridFlat.Visibility = Visibility.Visible; gridPyramid.Visibility = Visibility.Collapsed; } else if (cbBottomShape.SelectedIndex == (int)BottomShape.Pyramid) { imgWellBottomShape.Source = BitmapFrame.Create(new Uri("pack://application:,,,./Assets/Consumables/倒三角形.png"), BitmapCreateOptions.None, BitmapCacheOption.OnLoad); gridTaper.Visibility = Visibility.Collapsed; gridHalfBall.Visibility = Visibility.Collapsed; gridFlat.Visibility = Visibility.Collapsed; gridPyramid.Visibility = Visibility.Visible; } } private void textboxRows_LostFocus(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(textboxRows.Text.Trim()) || string.IsNullOrEmpty(textboxColumns.Text.Trim())) return; int rows = 0; int.TryParse(textboxRows.Text.Trim(), out rows); int cols = 0; int.TryParse(textboxColumns.Text.Trim(), out cols); textboxWellCount.Text = (rows * cols).ToString(); } private void textboxColumns_LostFocus(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(textboxRows.Text.Trim()) || string.IsNullOrEmpty(textboxColumns.Text.Trim())) return; int rows = 0; int.TryParse(textboxRows.Text.Trim(), out rows); int cols = 0; int.TryParse(textboxColumns.Text.Trim(), out cols); textboxWellCount.Text = (rows * cols).ToString(); } private void PreviewTextInput(object sender, TextCompositionEventArgs e) { if (!Utilities.isNumberic(e.Text)) { e.Handled = true; } else e.Handled = false; } private void dgPointListData_BeginningEdit(object sender, DataGridBeginningEditEventArgs e) { } private void dgPointListData_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) { try { //如果点击了放弃按钮或ESC if (e.EditAction == DataGridEditAction.Cancel) { return; } //获取编辑模式显示的元素,因为使用了模板,因此这里是ContentPresenter类型 ContentPresenter cp = e.EditingElement as ContentPresenter; if (cp != null && VisualTreeHelper.GetChildrenCount(cp) > 0) { //找到编辑框 System.Windows.Controls.TextBox textBox = VisualTreeHelper.GetChild(cp, 0) as System.Windows.Controls.TextBox; //如果找到 if (textBox != null) { string id = Convert.ToString(textBox.Tag); //Labware labwareT = (Labware)(comboboxLabwareType.SelectedItem as Labware); var labT = labwareWellInfos.FirstOrDefault(x => x.well_id.Equals(id)); if (labT != null) { if (textBox.Name == "tbxWellName") { labT.labware_well_name = textBox.Text; } else if (textBox.Name == "tbWellCenterx") { labT.labware_well_center_x = Convert.ToDouble(textBox.Text); } else if (textBox.Name == "tbWellCentery") { labT.labware_well_center_y = Convert.ToDouble(textBox.Text); } else if (textBox.Name == "tbWellDeepVal") { labT.labware_well_deepval = Convert.ToDouble(textBox.Text); } else if (textBox.Name == "tbWellMaxLength") { labT.well_max_length = Convert.ToDouble(textBox.Text); } } //更新现在有的数据进入液体对象 //UpdateSpaceCoordinates(); var dataGrid = sender as System.Windows.Controls.DataGrid; dataGrid.BeginEdit(); } System.Windows.Controls.ComboBox comBox = VisualTreeHelper.GetChild(cp, 0) as System.Windows.Controls.ComboBox; if (comBox != null) { string id = Convert.ToString(comBox.Tag); //Labware labwareT = (Labware)(comboboxLabwareType.SelectedItem as Labware); var labT = labwareWellInfos.FirstOrDefault(x => x.well_id.Equals(id)); if (labT != null) { if (comBox.Name == "cbxShape") { labT.labware_well_shape = comBox.SelectedIndex; } } var dataGrid = sender as System.Windows.Controls.DataGrid; dataGrid.BeginEdit(); } } } catch (Exception ex) { LoggerHelper.ErrorLog("System error:" + ex.Source + ":" + ex.Message.ToString()); } } private void dgPointListData_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e) { } public ObservableCollection labwareWellInfos = new ObservableCollection(); private void btnAdd_Click(object sender, RoutedEventArgs e) { try { LabwareWellInfo labwareWellInfo = new LabwareWellInfo(); labwareWellInfo.Index = labwareWellInfos.Count + 1; labwareWellInfo.labware_id = labware.labware_id; labwareWellInfo.labware_well_name = ""; labwareWellInfo.labware_well_center_x = 0d; labwareWellInfo.labware_well_center_y = 0d; labwareWellInfo.labware_well_deepval = 0d; labwareWellInfo.labware_well_shape = 0; labwareWellInfo.well_max_length = 0d; labwareWellInfo.well_id=Guid.NewGuid().ToString(); labwareWellInfos.Add(labwareWellInfo); //更新现在有的数据进入耗材对象 //UpdateSpaceCoordinates(); } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } private void btnDelete_Click(object sender, RoutedEventArgs e) { try { int SelectedRow = dgPointListData.SelectedIndex;//尝试解析出所选行 if (SelectedRow < 0) { return; } FrameworkElement element = dgPointListData.Columns[0].GetCellContent(dgPointListData.Items[SelectedRow]); List