2026-06-18 15:18:11 +08:00
|
|
|
|
using System.Collections.Specialized;
|
|
|
|
|
|
using System.Windows;
|
2026-06-17 15:41:06 +08:00
|
|
|
|
using System.Windows.Controls;
|
2026-06-18 15:18:11 +08:00
|
|
|
|
using System.Windows.Data;
|
2026-06-17 15:41:06 +08:00
|
|
|
|
using YY.Admin.ViewModels.RubberQuickTest;
|
|
|
|
|
|
|
|
|
|
|
|
namespace YY.Admin.Views.RubberQuickTest;
|
|
|
|
|
|
|
|
|
|
|
|
public partial class RubberQuickTestOperationView : UserControl
|
|
|
|
|
|
{
|
2026-06-18 15:18:11 +08:00
|
|
|
|
private RubberQuickTestOperationViewModel? _vm;
|
|
|
|
|
|
|
|
|
|
|
|
public RubberQuickTestOperationView()
|
2026-06-17 15:41:06 +08:00
|
|
|
|
{
|
2026-06-18 15:18:11 +08:00
|
|
|
|
InitializeComponent();
|
|
|
|
|
|
Loaded += OnLoaded;
|
|
|
|
|
|
DataContextChanged += OnDataContextChanged;
|
|
|
|
|
|
Unloaded += (_, _) => DetachViewModel();
|
2026-06-17 15:41:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-06-18 15:18:11 +08:00
|
|
|
|
private void OnLoaded(object sender, RoutedEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
// 兜底:AutoWireViewModel 可能在构造函数订阅 DataContextChanged 之前就设置了 DataContext
|
|
|
|
|
|
AttachViewModel(DataContext as RubberQuickTestOperationViewModel);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnDataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
DetachViewModel();
|
|
|
|
|
|
AttachViewModel(DataContext as RubberQuickTestOperationViewModel);
|
|
|
|
|
|
}
|
2026-06-17 15:41:06 +08:00
|
|
|
|
|
2026-06-18 15:18:11 +08:00
|
|
|
|
private void AttachViewModel(RubberQuickTestOperationViewModel? vm)
|
2026-06-17 15:41:06 +08:00
|
|
|
|
{
|
2026-06-18 15:18:11 +08:00
|
|
|
|
if (vm == null || ReferenceEquals(_vm, vm)) return;
|
|
|
|
|
|
|
|
|
|
|
|
_vm = vm;
|
|
|
|
|
|
_vm.InspectColumnsChanged += RebuildInspectColumns;
|
|
|
|
|
|
_vm.DataPointColumns.CollectionChanged += OnDataPointColumnsChanged;
|
|
|
|
|
|
RebuildInspectColumns();
|
|
|
|
|
|
}
|
2026-06-17 15:41:06 +08:00
|
|
|
|
|
2026-06-18 15:18:11 +08:00
|
|
|
|
private void DetachViewModel()
|
2026-06-17 15:41:06 +08:00
|
|
|
|
{
|
2026-06-18 15:18:11 +08:00
|
|
|
|
if (_vm == null) return;
|
|
|
|
|
|
_vm.InspectColumnsChanged -= RebuildInspectColumns;
|
|
|
|
|
|
_vm.DataPointColumns.CollectionChanged -= OnDataPointColumnsChanged;
|
|
|
|
|
|
_vm = null;
|
2026-06-17 15:41:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-06-18 15:18:11 +08:00
|
|
|
|
private void OnDataPointColumnsChanged(object? sender, NotifyCollectionChangedEventArgs e)
|
|
|
|
|
|
=> RebuildInspectColumns();
|
|
|
|
|
|
|
|
|
|
|
|
private void RebuildInspectColumns()
|
2026-06-17 15:41:06 +08:00
|
|
|
|
{
|
2026-06-18 15:18:11 +08:00
|
|
|
|
if (!Dispatcher.CheckAccess())
|
|
|
|
|
|
{
|
|
|
|
|
|
Dispatcher.Invoke(RebuildInspectColumns);
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var vm = _vm ?? DataContext as RubberQuickTestOperationViewModel;
|
|
|
|
|
|
if (vm == null) return;
|
|
|
|
|
|
|
|
|
|
|
|
InspectResultGrid.Columns.Clear();
|
|
|
|
|
|
|
|
|
|
|
|
InspectResultGrid.Columns.Add(new DataGridTextColumn
|
|
|
|
|
|
{
|
|
|
|
|
|
Header = "编号",
|
|
|
|
|
|
Binding = new Binding(nameof(QuickTestInspectRowViewModel.RowNo))
|
|
|
|
|
|
{
|
|
|
|
|
|
Mode = BindingMode.OneWay
|
|
|
|
|
|
},
|
|
|
|
|
|
IsReadOnly = true,
|
|
|
|
|
|
Width = 80
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < vm.DataPointColumns.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
var col = vm.DataPointColumns[i];
|
|
|
|
|
|
var columnIndex = i;
|
|
|
|
|
|
var header = string.IsNullOrWhiteSpace(col.PointName)
|
|
|
|
|
|
? $"数据点{columnIndex + 1}"
|
|
|
|
|
|
: col.PointName;
|
|
|
|
|
|
|
|
|
|
|
|
InspectResultGrid.Columns.Add(new DataGridTextColumn
|
|
|
|
|
|
{
|
|
|
|
|
|
Header = header,
|
|
|
|
|
|
Binding = new Binding($"Cells[{columnIndex}].Value")
|
|
|
|
|
|
{
|
|
|
|
|
|
UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged,
|
|
|
|
|
|
Mode = BindingMode.TwoWay,
|
|
|
|
|
|
TargetNullValue = string.Empty
|
|
|
|
|
|
},
|
|
|
|
|
|
Width = 100,
|
|
|
|
|
|
IsReadOnly = false
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
InspectResultGrid.Columns.Add(new DataGridTextColumn
|
|
|
|
|
|
{
|
|
|
|
|
|
Header = "实验结果",
|
|
|
|
|
|
Binding = new Binding(nameof(QuickTestInspectRowViewModel.InspectResultText))
|
|
|
|
|
|
{
|
|
|
|
|
|
Mode = BindingMode.OneWay
|
|
|
|
|
|
},
|
|
|
|
|
|
IsReadOnly = true,
|
|
|
|
|
|
Width = 90
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void InspectResultGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
var vm = _vm ?? DataContext as RubberQuickTestOperationViewModel;
|
|
|
|
|
|
if (vm == null) return;
|
|
|
|
|
|
vm.SelectedInspectRow = InspectResultGrid.SelectedItem as QuickTestInspectRowViewModel;
|
|
|
|
|
|
}
|
2026-06-17 15:41:06 +08:00
|
|
|
|
}
|