using Aitex.Core.RT.Device;
using Aitex.Core.UI.MVVM;
using Aitex.Core.Utilities;
using MECF.Framework.Common.CommonData.PUF;
using MECF.Framework.Common.Equipment;
using MECF.Framework.Common.OperationCenter;
using MECF.Framework.Common.Persistent.SRD;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
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;
namespace CyberX8_Themes.UserControls
{
///
/// WaferPresenceControl.xaml 的交互逻辑
///
public partial class WaferPresenceControl : UserControl
{
///
/// 构造函数
///
public WaferPresenceControl()
{
KeyDownCommand = new DelegateCommand(KeyDownAction);
InitializeComponent();
}
#region 属性
public static readonly DependencyProperty ModuleNameProperty = DependencyProperty.Register(
"ModuleName", typeof(string), typeof(WaferPresenceControl), new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender));
///
/// 模块名称
///
public string ModuleName
{
get
{
return (string)this.GetValue(ModuleNameProperty);
}
set
{
this.SetValue(ModuleNameProperty, value);
}
}
public static readonly DependencyProperty InputLowThresholdProperty = DependencyProperty.Register(
"InputLowThreshold", typeof(double), typeof(WaferPresenceControl), new FrameworkPropertyMetadata(0.00, FrameworkPropertyMetadataOptions.AffectsRender));
///
/// InputLowThreshold
///
public double InputLowThreshold
{
get
{
return (double)this.GetValue(InputLowThresholdProperty);
}
set
{
this.SetValue(InputLowThresholdProperty, value);
}
}
public static readonly DependencyProperty InputHighThresholdProperty = DependencyProperty.Register(
"InputHighThreshold", typeof(double), typeof(WaferPresenceControl), new FrameworkPropertyMetadata(0.00, FrameworkPropertyMetadataOptions.AffectsRender));
///
/// InputHighThreshold
///
public double InputHighThreshold
{
get
{
return (double)this.GetValue(InputHighThresholdProperty);
}
set
{
this.SetValue(InputHighThresholdProperty, value);
}
}
public static readonly DependencyProperty InputEmptyThresholdProperty = DependencyProperty.Register(
"InputEmptyThreshold", typeof(double), typeof(WaferPresenceControl), new FrameworkPropertyMetadata(0.00, FrameworkPropertyMetadataOptions.AffectsRender));
///
/// InputEmptyThreshold
///
public double InputEmptyThreshold
{
get
{
return (double)this.GetValue(InputEmptyThresholdProperty);
}
set
{
this.SetValue(InputEmptyThresholdProperty, value);
}
}
public static readonly DependencyProperty PersistentValueProperty = DependencyProperty.Register(
"PersistentValue", typeof(SRDPersistentValue), typeof(WaferPresenceControl), new FrameworkPropertyMetadata(null, new PropertyChangedCallback(OnItemsSourceChanged)));
///
/// PersistentValue
///
public SRDPersistentValue PersistentValue
{
get
{
return (SRDPersistentValue)this.GetValue(PersistentValueProperty);
}
set
{
this.SetValue(PersistentValueProperty, value);
}
}
public static readonly DependencyProperty IsWaferPresenceProperty = DependencyProperty.Register(
"IsWaferPresence", typeof(bool), typeof(WaferPresenceControl), new FrameworkPropertyMetadata(true, new PropertyChangedCallback(OnIsWaferPresenceChanged)));
///
/// IsWaferPresence
///
public bool IsWaferPresence
{
get
{
return (bool)this.GetValue(IsWaferPresenceProperty);
}
set
{
this.SetValue(IsWaferPresenceProperty, value);
}
}
private static void OnItemsSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (e.NewValue != null)
{
SRDPersistentValue data = (SRDPersistentValue)e.NewValue;
d.SetValue(InputHighThresholdProperty, data.WellPlacedHighThreshold);
d.SetValue(InputLowThresholdProperty, data.WellPlacedLowThreshold);
d.SetValue(InputEmptyThresholdProperty, data.EmptyThreshold);
}
}
private static void OnIsWaferPresenceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
WaferPresenceControl waferPresenceControl = (WaferPresenceControl)d;
if (e.NewValue != null)
{
bool data = (bool)e.NewValue;
waferPresenceControl.checkbox1.IsChecked = !data;
}
}
//private static void OnSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
//{
// if (e.NewValue != null)
// {
// bool data = (bool)e.NewValue;
// d.SetValue(IsWaferPresenceProperty, data);
// }
//}
#endregion
[IgnorePropertyChange]
public ICommand KeyDownCommand
{
get;
private set;
}
private void KeyDownAction(object[] param)
{
if (param.Length >= 2)
{
if (double.TryParse(param[1].ToString(), out double paramValue))
{
InvokeClient.Instance.Service.DoOperation($"{ModuleName}.KeyDown", param[0].ToString(), paramValue);
}
}
}
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
CheckBox checkBox = (sender as CheckBox);
if (string.IsNullOrEmpty(ModuleName)) return;
if ((bool)checkBox.IsChecked)
{
InvokeClient.Instance.Service.DoOperation($"{ModuleName}.UpdateIsWaferPresenceAction", false);
}
else
{
InvokeClient.Instance.Service.DoOperation($"{ModuleName}.UpdateIsWaferPresenceAction", true);
}
}
}
}