<UserControl x:Class="LDMOPTIC.MeasureItem.View_IVL2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:LDMOPTIC.MeasureItem"
xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
xmlns:hc="https://handyorg.github.io/handycontrol"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:local1="clr-namespace:Utility;assembly=Utility"
d:DataContext="{d:DesignInstance local:ViewModel_IVL2}"
d:DesignHeight="800"
d:DesignWidth="1200"
mc:Ignorable="d">
<UserControl.DataContext>
<local:ViewModel_IVL2/>
</UserControl.DataContext>
<UserControl.Resources>
<local:IVLChartTypeConverter x:Key="IVLChartConverter"/>
<local1:BitmapToImageSourceConverter x:Key="BitmapToImageSourceConverter" />
<local:TestModeToVisibilityConverter x:Key="TestModeToVisibilityConverter" />
</UserControl.Resources>
<Grid Background="White">
<Grid.RowDefinitions>
<RowDefinition Height="40" />
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border Grid.Row="1" BorderThickness="1" BorderBrush="LightGray" CornerRadius="4" />
<Border Grid.Row="2" BorderThickness="1" BorderBrush="LightGray" CornerRadius="4" />
<Grid Grid.Row="0" Background="#F3F4F6">
<DockPanel LastChildFill="True">
<TextBlock Margin="10,0"
HorizontalAlignment="Left"
Style="{StaticResource TextBlockSubTitleBold}"
Text="多工位IVL"/>
</DockPanel>
</Grid>
<Grid Grid.Row="1">
<StackPanel Orientation="Horizontal" Margin="4">
<TextBlock Text="当前测试进度:" Style="{StaticResource TextBlockDefaultPrimary}" Margin=" 5,2"/>
<ProgressBar Value="{Binding TestProgressValue}" Width="400" Margin="5,2"/>
<TextBlock Text="测试用时:" Style="{StaticResource TextBlockDefaultPrimary}" Margin=" 5,2"/>
<TextBox Width="80" Height="20" Margin="5,2"
Text="{Binding TestTotalTime ,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock Text="s" Style="{StaticResource TextBlockBaseStyle}" Margin=" 5,2"/>
</StackPanel>
</Grid>
<Grid Grid.Row="2">
<TabControl Margin="5" Style="{StaticResource TabControlCapsuleSolid}">
<TabItem Header="IVL曲线">
<Grid>
<TabControl ItemsSource="{Binding OutputModel_MultiStationIVL.IVLDataWorkStationModels,UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding WorkStationSelectedItemIVL, Mode=TwoWay}"
VirtualizingPanel.IsVirtualizing="False"
VirtualizingPanel.VirtualizationMode="Standard"
Style="{StaticResource TabControlBaseStyle}" Margin="2">
<!-- 外层:工位 -->
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding WorkStationName}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<!-- 外层内容:嵌套点位 TabControl -->
<TabControl.ContentTemplate>
<DataTemplate>
<TabControl ItemsSource="{Binding IVLDataPointModels,UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding DataContext.PointSelectedItemIVL, Mode=TwoWay,RelativeSource={RelativeSource AncestorType=UserControl}}"
Style="{StaticResource TabControlBaseStyle}"
VirtualizingPanel.IsVirtualizing="False"
VirtualizingPanel.VirtualizationMode="Standard"
Margin="2">
<!-- 中层:点位 -->
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding PointName}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<!-- 内层测试模式 TabControl -->
<TabControl.ContentTemplate>
<DataTemplate>
<TabControl ItemsSource="{Binding IVLDataTestTypeModels,UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding DataContext.TestTypeSelectedItemIVL, Mode=TwoWay,RelativeSource={RelativeSource AncestorType=UserControl}}"
Style="{StaticResource TabControlBaseStyle}"
VirtualizingPanel.IsVirtualizing="False"
VirtualizingPanel.VirtualizationMode="Standard"
Margin="2">
<!-- 内层:测试模式 -->
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding TestModeType}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<!-- 测试模式内容:图表和数据 -->
<TabControl.ContentTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="5*"/>
<RowDefinition Height="3*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<ScrollViewer VerticalScrollBarVisibility="Auto">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="AUTO"/>
</Grid.RowDefinitions>
<!-- 动态生成曲线图 -->
<ItemsControl ItemsSource="{Binding IVLChartDataDictionary, UpdateSourceTrigger=PropertyChanged}"
VirtualizingPanel.VirtualizationMode="Standard"
VirtualizingPanel.CacheLengthUnit="Item"
VirtualizingPanel.CacheLength="10,10">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="3"
IsItemsHost="True"
VirtualizingPanel.IsVirtualizing="True"
VirtualizingPanel.VirtualizationMode="Standard"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderThickness="0.5" BorderBrush="LightGray" CornerRadius="6">
<lvc:CartesianChart Margin="3"
DisableAnimations="True"
Foreground="Black"
LegendLocation="Top"
Zoom="Xy"
Height="213">
<lvc:CartesianChart.Series>
<lvc:LineSeries Title="{Binding Key}"
DataLabels="False"
Fill="Transparent"
LineSmoothness="1"
PointGeometrySize="3"
Stroke="{Binding Key, Converter={StaticResource IVLChartConverter}, ConverterParameter=LineColor}"
Values="{Binding Value,UpdateSourceTrigger=PropertyChanged}"/>
</lvc:CartesianChart.Series>
<lvc:CartesianChart.AxisX>
<lvc:Axis Title="{Binding Key, Converter={StaticResource IVLChartConverter}, ConverterParameter=XTitle}"
LabelFormatter="{Binding DataContext.Formatter , RelativeSource={RelativeSource AncestorType={x:Type local:ViewModel_IVL}}}"/>
</lvc:CartesianChart.AxisX>
<lvc:CartesianChart.AxisY>
<lvc:Axis Title="{Binding Key, Converter={StaticResource IVLChartConverter}, ConverterParameter=YTitle}"
LabelFormatter="{Binding DataContext.Formatter , RelativeSource={RelativeSource AncestorType={x:Type local:ViewModel_IVL}}}"/>
</lvc:CartesianChart.AxisY>
</lvc:CartesianChart>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" BorderThickness="0.5" BorderBrush="LightGray" CornerRadius="6">
<Image Source="{Binding ImageSource1931, Converter={StaticResource BitmapToImageSourceConverter}}" Margin="2" MaxWidth="400" />
</Border>
<Border Grid.Column="1" BorderThickness="0.5" BorderBrush="LightGray" CornerRadius="6" >
<Image Source="{Binding ImageSource1976, Converter={StaticResource BitmapToImageSourceConverter}}" Margin="2" MaxWidth="400"/>
</Border>
</Grid>
</Grid>
</ScrollViewer>
</Grid>
<Grid Grid.Row="1">
<!-- 此处绑定测试模式下的IVL数据 -->
<DataGrid x:Name="IVLTestTypeDataGrid"
ItemsSource="{Binding IVLDataModels}"
Margin="6" IsReadOnly="True"
AutoGenerateColumns="False"
CanUserAddRows="False"
ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Auto"
Style="{StaticResource DataGrid.Small}">
<DataGrid.Columns>
<DataGridTextColumn Header="Temp(℃)" Binding="{Binding Temptrue}"
Visibility="{Binding DataContext.TestTypeSelectedItemIVL.TestModeType,
RelativeSource={RelativeSource AncestorType=TabControl},
Converter={StaticResource TestModeToVisibilityConverter},
ConverterParameter=Temptrue}" />
<DataGridTextColumn Header="J (mA/cm²)" Binding="{Binding J}"
Visibility="{Binding DataContext.TestTypeSelectedItemIVL.TestModeType,
RelativeSource={RelativeSource AncestorType=TabControl},
Converter={StaticResource TestModeToVisibilityConverter},
ConverterParameter=J}" />
<DataGridTextColumn Header="I (mA)" Binding="{Binding I}"
Visibility="{Binding DataContext.TestTypeSelectedItemIVL.TestModeType,
RelativeSource={RelativeSource AncestorType=TabControl},
Converter={StaticResource TestModeToVisibilityConverter},
ConverterParameter=I}" />
<DataGridTextColumn Header="V (V)" Binding="{Binding V}"
Visibility="{Binding DataContext.TestTypeSelectedItemIVL.TestModeType,
RelativeSource={RelativeSource AncestorType=TabControl},
Converter={StaticResource TestModeToVisibilityConverter},
ConverterParameter=V}" />
<DataGridTextColumn Header="L (cd/m²)" Binding="{Binding L}"
Visibility="{Binding DataContext.TestTypeSelectedItemIVL.TestModeType,
RelativeSource={RelativeSource AncestorType=TabControl},
Converter={StaticResource TestModeToVisibilityConverter},
ConverterParameter=L}" />
<DataGridTextColumn Header="C.E.(cd/A)" Binding="{Binding CE}"
Visibility="{Binding DataContext.TestTypeSelectedItemIVL.TestModeType,
RelativeSource={RelativeSource AncestorType=DataGrid},
Converter={StaticResource TestModeToVisibilityConverter},
ConverterParameter=CE}" />
<DataGridTextColumn Header="P.E.(lm/W)" Binding="{Binding PE}"
Visibility="{Binding DataContext.TestTypeSelectedItemIVL.TestModeType,
RelativeSource={RelativeSource AncestorType=TabControl},
Converter={StaticResource TestModeToVisibilityConverter},
ConverterParameter=PE}" />
<DataGridTextColumn Header="EQE(%)" Binding="{Binding EQE}"
Visibility="{Binding DataContext.TestTypeSelectedItemIVL.TestModeType,
RelativeSource={RelativeSource AncestorType=TabControl},
Converter={StaticResource TestModeToVisibilityConverter},
ConverterParameter=EQE}" />
<DataGridTextColumn Header="CIE_x" Binding="{Binding CIEx}"
Visibility="{Binding DataContext.TestTypeSelectedItemIVL.TestModeType,
RelativeSource={RelativeSource AncestorType=TabControl},
Converter={StaticResource TestModeToVisibilityConverter},
ConverterParameter=CIEx}" />
<DataGridTextColumn Header="CIE_y" Binding="{Binding CIEy}"
Visibility="{Binding DataContext.TestTypeSelectedItemIVL.TestModeType,
RelativeSource={RelativeSource AncestorType=TabControl},
Converter={StaticResource TestModeToVisibilityConverter},
ConverterParameter=CIEy}" />
<DataGridTextColumn Header="CIE_u'" Binding="{Binding CIEu}"
Visibility="{Binding DataContext.TestTypeSelectedItemIVL.TestModeType,
RelativeSource={RelativeSource AncestorType=TabControl},
Converter={StaticResource TestModeToVisibilityConverter},
ConverterParameter=CIEu}" />
<DataGridTextColumn Header="CIE_v'" Binding="{Binding CIEv}"
Visibility="{Binding DataContext.TestTypeSelectedItemIVL.TestModeType,
RelativeSource={RelativeSource AncestorType=TabControl},
Converter={StaticResource TestModeToVisibilityConverter},
ConverterParameter=CIEv}" />
<DataGridTextColumn Header="CCT" Binding="{Binding CCT}"
Visibility="{Binding DataContext.TestTypeSelectedItemIVL.TestModeType,
RelativeSource={RelativeSource AncestorType=TabControl},
Converter={StaticResource TestModeToVisibilityConverter},
ConverterParameter=CCT}" />
<DataGridTextColumn Header="WLP(λP)" Binding="{Binding WLP}"
Visibility="{Binding DataContext.TestTypeSelectedItemIVL.TestModeType,
RelativeSource={RelativeSource AncestorType=TabControl},
Converter={StaticResource TestModeToVisibilityConverter},
ConverterParameter=WLP}" />
<DataGridTextColumn Header="CWL" Binding="{Binding CWL}"
Visibility="{Binding DataContext.TestTypeSelectedItemIVL.TestModeType,
RelativeSource={RelativeSource AncestorType=TabControl},
Converter={StaticResource TestModeToVisibilityConverter},
ConverterParameter=CWL}" />
<DataGridTextColumn Header="FWHM" Binding="{Binding FWHM}"
Visibility="{Binding DataContext.TestTypeSelectedItemIVL.TestModeType,
RelativeSource={RelativeSource AncestorType=TabControl},
Converter={StaticResource TestModeToVisibilityConverter},
ConverterParameter=FWHM}" />
<DataGridTextColumn Header="Cp(F)" Binding="{Binding Cp}"
Visibility="{Binding DataContext.TestTypeSelectedItemIVL.TestModeType,
RelativeSource={RelativeSource AncestorType=UserControl},
Converter={StaticResource TestModeToVisibilityConverter},
ConverterParameter=Cp}" />
<DataGridTextColumn Header="D" Binding="{Binding D}"
Visibility="{Binding DataContext.TestTypeSelectedItemIVL.TestModeType,
RelativeSource={RelativeSource AncestorType=UserControl},
Converter={StaticResource TestModeToVisibilityConverter},
ConverterParameter=D}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Grid>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
</Grid>
</TabItem>
<TabItem Header="可视角图形">
<TabControl ItemsSource="{Binding OutputModel_MultiStationIVL.VADataWorkStationModels,UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding WorkStationSelectedItemVA, Mode=TwoWay}"
VirtualizingPanel.IsVirtualizing="False"
VirtualizingPanel.VirtualizationMode="Standard"
Style="{StaticResource TabControlBaseStyle}" Margin="2">
<!-- 外层:工位 -->
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding WorkStationName}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<!-- 外层内容:嵌套点位TabControl -->
<TabControl.ContentTemplate>
<DataTemplate>
<TabControl ItemsSource="{Binding VADataPointModels}"
SelectedItem="{Binding DataContext.PointSelectedItemVA, Mode=TwoWay,RelativeSource={RelativeSource AncestorType=UserControl}}"
Style="{StaticResource TabControlBaseStyle}"
VirtualizingPanel.IsVirtualizing="False"
VirtualizingPanel.VirtualizationMode="Standard"
Margin="2">
<!-- 中层:点位 -->
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding PointName}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<!-- 新增:内层测试模式TabControl -->
<TabControl.ContentTemplate>
<DataTemplate>
<TabControl ItemsSource="{Binding VADataTestTypeModels}"
SelectedItem="{Binding DataContext.TestTypeSelectedItemVA, Mode=TwoWay,RelativeSource={RelativeSource AncestorType=UserControl}}"
Style="{StaticResource TabControlBaseStyle}"
VirtualizingPanel.IsVirtualizing="False"
VirtualizingPanel.VirtualizationMode="Standard"
Margin="2">
<!-- 内层:测试模式 -->
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding TestModeType}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<!-- 测试模式内容:图表和数据 -->
<TabControl.ContentTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="2*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<UniformGrid Columns="2" Rows="1">
<!-- 添加图1 -->
<lvc:CartesianChart
Margin="3"
DisableAnimations="True"
Foreground="Black"
LegendLocation="Top"
Zoom="Xy">
<lvc:CartesianChart.Series>
<lvc:LineSeries
Title="Angle-L"
DataLabels="True"
Fill="Transparent"
LineSmoothness="1"
PointGeometrySize="6"
Stroke="LightSalmon"
Values="{Binding AngleLumValues}" />
</lvc:CartesianChart.Series>
<lvc:CartesianChart.AxisX>
<lvc:Axis Title="Angle(°)" LabelFormatter="{Binding Formatter , RelativeSource={RelativeSource AncestorType={x:Type local:ViewModel_IVL}}}" />
</lvc:CartesianChart.AxisX>
<lvc:CartesianChart.AxisY>
<lvc:Axis Title="L(cd/m^2)" LabelFormatter="{Binding Formatter , RelativeSource={RelativeSource AncestorType={x:Type local:ViewModel_IVL}}}" />
</lvc:CartesianChart.AxisY>
</lvc:CartesianChart>
<!-- 添加图2 -->
<lvc:CartesianChart
Margin="3"
DisableAnimations="True"
Foreground="Black"
LegendLocation="Top"
Zoom="Xy">
<lvc:CartesianChart.Series>
<lvc:LineSeries
Title="Angle-J"
DataLabels="True"
Fill="Transparent"
LineSmoothness="1"
PointGeometrySize="6"
Stroke="LightGreen"
Values="{Binding AngleJValues}" />
</lvc:CartesianChart.Series>
<lvc:CartesianChart.AxisX>
<lvc:Axis Title="Angle(°)" LabelFormatter="{Binding Formatter , RelativeSource={RelativeSource AncestorType={x:Type local:ViewModel_IVL}}}" />
</lvc:CartesianChart.AxisX>
<lvc:CartesianChart.AxisY>
<lvc:Axis Title="J(mA/cm²)" LabelFormatter="{Binding Formatter , RelativeSource={RelativeSource AncestorType={x:Type local:ViewModel_IVL}}}" />
</lvc:CartesianChart.AxisY>
</lvc:CartesianChart>
</UniformGrid>
</Grid>
<Grid Grid.Row="1">
<!-- 此处绑定测试模式下的VA数据 -->
<DataGrid ItemsSource="{Binding VADataModels}"
Margin="6" IsReadOnly="True"
AutoGenerateColumns="False"
CanUserAddRows="False"
ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Auto"
Style="{StaticResource DataGrid.Small}">
<DataGrid.Columns>
<DataGridTextColumn Header="Angle(°)" Binding="{Binding Angle}" />
<DataGridTextColumn Header="L (cd/m²)" Binding="{Binding L}" />
<DataGridTextColumn Header="L Decay(%)" Binding="{Binding LDecay}" />
<DataGridTextColumn Header="J (mA/cm²)" Binding="{Binding J}" />
<DataGridTextColumn Header="I (mA)" Binding="{Binding I}" />
<DataGridTextColumn Header="V (V)" Binding="{Binding V}" />
<DataGridTextColumn Header="C.E.(cd/A)" Binding="{Binding CE}" />
<DataGridTextColumn Header="P.E.(lm/W)" Binding="{Binding PE}" />
<DataGridTextColumn Header="EQE(%)" Binding="{Binding EQE}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Grid>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
</TabItem>
</TabControl>
</Grid>
</Grid>
</UserControl>
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Data;
namespace LDMOPTIC.MeasureItem
{
public class TestModeToVisibilityConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null || parameter == null)
return Visibility.Visible;
TestModeType testMode = (TestModeType)value;
string columnName = parameter.ToString();
// CP1、CP2、CP3模式的特殊处理
if (testMode == TestModeType.CP1 ||
testMode == TestModeType.CP2 ||
testMode == TestModeType.CP3)
{
// 只显示V、Cp、D列,其他列隐藏
return columnName == "V" || columnName == "Cp" || columnName == "D"
? Visibility.Visible : Visibility.Collapsed;
}
else
{
// 其他模式隐藏Cp和D列
return columnName == "Cp" || columnName == "D"
? Visibility.Collapsed : Visibility.Visible;
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LDMOPTIC.MeasureItem
{
/// <summary>
/// 测试模式类型
/// </summary>
public enum TestModeType
{
CV, // V模式
CC, // I模式
CS, // CS模式(可视角)
CP1, // CP1模式
CP2, // CP2模式
CP3, // CP3模式
TempVar1, //变温IVL1模式
TempVar2, //变温IVL2模式
TempVar3, //变温IVL3模式
Custom1, // 自定义1模式
Custom2, // 自定义2模式
}
}using LiveCharts;
using System;
using System.Drawing;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using LDMOPTIC.Device;
using Newtonsoft.Json;
using System.Threading;
using System.Reflection;
using DataTable = System.Data.DataTable;
using System.ComponentModel;
using System.Data;
using System.Windows.Media;
using Microsoft.Office.Interop.Excel;
using Utility;
using Timer = System.Threading.Timer;
using System.Diagnostics;
using OpenTK.Graphics.OpenGL;
using HalconDotNet;
using System.Security.Cryptography;
using LDMOPTIC.SysSetting;
using LiveCharts.Wpf;
namespace LDMOPTIC.MeasureItem
{
public class ViewModel_IVL2 : ViewModel_TestItemTemplate
{
// 定义委托
public Action<TestedDeviceModel> TestStatusUpdated; //更新ViewModel_Recipe测试器件测试状态 委托
public Action<string> RemovePendingTested; //触发ViewModel_Recipe的待测试集合删除已测试项 委托
public System.Action ReciveFSDeviceID; //触发ViewModel_Recipe的定时读取前端文件器件编号相关数据 委托
public Action<string, string> UpdateLuminousColor; //触发ViewModel_Recipe的已测试集合更新器件发光颜色 委托
private readonly ViewModel_Recipe viewModel_Recipe = ViewModel_Recipe.Instance; // 使用单例
private bool hasDCExecuted = false; // 特性DC设置是否执行完毕
HDevelopExportIVL2 hDevelopExport = null;
public override void ViewModelInitialize()
{
IVLGlobal.CurWksTestName = Input.TestStationItem; //当前工位名称 //供映射文件使用
TestStatusUpdated = viewModel_Recipe.OnTestStatusUpdated;
RemovePendingTested = viewModel_Recipe.OnRemovePendingTested;
viewModel_Recipe.OnPendingDevicesUpdated = OnGetPendingDevices;
ReciveFSDeviceID = viewModel_Recipe.OnGenerateDeviceID;
UpdateLuminousColor = viewModel_Recipe.OnUpdateLuminousColor;
//1.加载启用工位配置工位配置
LoadWorkStations();
//2.加载工位点位和继电器参数配置
LoadPointRelayMapping();
//3.加载Recipe配置
LoadRecipeConfig();
//4.加载LCR继电器映射
LoadLCRRelayMappings();
//5.加载温度计工位映射
LoadThermometerMappings();
//6.加载轴工位映射
LoadAxisMappings();
//7.生成当前所有工位实例
GenerateIVLDataWorkStationModels();
GenerateVADataWorkStationModels();
//8.触发统计数据
//MonthlyWorkloadStatsTick();
//9.生成前端文件读取定时任务
//FSDeviceIDTick();
hDevelopExport = new HDevelopExportIVL2();
}
private bool stopOuterLoop = false; // 添加一个标志变量
InputModel_IVL2 Input { get => ItemInfo as InputModel_IVL2; }
public Func<double, string> Formatter = value => value.ToString("0.00"); // 图表属性
public IVLConfigure2Model IVLConfig { get; set; } = new IVLConfigure2Model(); //IVL配置信息
public ObservableCollection<ViewModel_WorkStation> WorkStations { get; set; } = new ObservableCollection<ViewModel_WorkStation>(); //工位配置信息
public ObservableCollection<PointRelayMapping> PointRelayMappings { get; set; } = new ObservableCollection<PointRelayMapping>(); //继电器I点和工位映射信息
public ObservableCollection<PendingDeviceModel> PendingDevices { get; set; } = new ObservableCollection<PendingDeviceModel>(); //待测器件集合(测试管理)
public ObservableCollection<MappingStationDeviceModel> MappingStationDevices { get; set; } = new ObservableCollection<MappingStationDeviceModel>(); //器件编号工位映射关系集合(测试管理)
public ObservableCollection<TestedDeviceModel> TestedDevices { get; set; } = new ObservableCollection<TestedDeviceModel>(); //已测试器件集合 (测试管理)
public ObservableCollection<LCRRelayMapping> LCRRelayMappings { get; set; } = new ObservableCollection<LCRRelayMapping>(); //LCR继电器I点和工位映射信息
private ObservableCollection<StationThermometerMapping> StationThermometerMappings { get; set; } = new ObservableCollection<StationThermometerMapping>(); //温度计和工位映射信息
private ObservableCollection<StationAxisMapping> StationAxisMappings { get; set; } = new ObservableCollection<StationAxisMapping>(); //工位和轴映射信息
private ObservableCollection<IVLInfo> IVLInfoList { get; set; } = new ObservableCollection<IVLInfo>(ConfigFrame.GetConfigObservableCollection<IVLInfo>()); //IVL信息
private OutputModel_MultiStationIVL2 outputModel_MultiStationIVL = new OutputModel_MultiStationIVL2();
public OutputModel_MultiStationIVL2 OutputModel_MultiStationIVL //IVL和VA所有相关数据
{
get { return outputModel_MultiStationIVL; }
set { outputModel_MultiStationIVL = value; OnPropertyChanged(); }
}
private IVLDataWorkStationModel _workStationSelectedItemIVL; //1.IVL选中的工作站
public IVLDataWorkStationModel WorkStationSelectedItemIVL
{
get { return _workStationSelectedItemIVL; }
set
{
_workStationSelectedItemIVL = value;
OnPropertyChanged();
}
}
private IVLDataPointModel _pointSelectedItemIVL; //2.IVL当前选中的点
public IVLDataPointModel PointSelectedItemIVL
{
get { return _pointSelectedItemIVL; }
set
{
_pointSelectedItemIVL = value;
OnPropertyChanged();
}
}
private IVLDataTestTypeModel _testTypeSelectedItemIVL; //3.IVL当前选中的测试类型
public IVLDataTestTypeModel TestTypeSelectedItemIVL
{
get { return _testTypeSelectedItemIVL; }
set
{
_testTypeSelectedItemIVL = value; OnPropertyChanged();
}
}
对于目前DataGrid x:Name="IVLTestTypeDataGrid"想要实现跟随外层Tabcontrol测试项的选择来决定表中各列内容的显示,目前使用的转换器并不会触发,可能是找不到上下文的原因,请问,该如何修改代码