LGES-OC5-PtoP-Welder/AuroraVision/VisionUI/Pattern/PatternRegistration/SubMenuCamPatternRegistrationView.xaml.cs
2026-06-05 13:44:39 +09:00

90 lines
3.1 KiB
C#

using Aurora;
using Aurora.Api;
using VisionCommon;
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using VisionCommonUI;
using VisionCommonUI.Resources;
using System.Collections.Generic;
namespace VisionUI.Pattern {
/// <summary>
/// 서브메뉴 : 캠 패턴 등록 뷰
/// SubMenuCamPatternRegistrationView.xaml behind code
/// </summary>
public partial class SubMenuCamPatternRegistrationView : UserControl {
private static readonly Logger _Logger = new Logger("SubMenuCamPatternRegistrationView");
private IDisposable _EventDisposable;
private bool _IsViewInitialized = false;
/// <summary>
/// 생성자
/// </summary>
public SubMenuCamPatternRegistrationView() {
InitializeComponent();
SetObservable();
}
private void SetObservable() {
if (_EventDisposable == null) {
var observable = VisionEventId.GetRecipeUpdateObservable();
_EventDisposable = observable.Subscribe(_ => ClearView());
}
}
private void ClearView() {
if (IsVisible) {
return;
}
Application.Current.Dispatcher.BeginInvoke(
new System.Action(() => {
camTabControl.Items.Clear();
_IsViewInitialized = false;
}));
}
private void InitializeView() {
var camIdFovInfoMap = new Dictionary<eCamId, FovInfo>();
foreach (FovInfo fovInfo in VisionRecipeManager.GetFovInfos()) {
var camRecipe = VisionRecipeManager.GetCamRecipe(fovInfo);
var camId = camRecipe.CamId;
if (!camIdFovInfoMap.ContainsKey(camId)) {
camIdFovInfoMap.Add(camId, fovInfo);
}
}
foreach (var keyValuePair in camIdFovInfoMap) {
var camTabItem = new TabItem() {
Header = keyValuePair.Key.ToString(),
Content = CreatePatternRegistrationView(keyValuePair.Value)
};
camTabItem.Style = FindResource("styleSubMenuRootTabItem") as Style;
camTabControl.Items.Add(camTabItem);
}
camTabControl.SelectedIndex = 0;
_IsViewInitialized = true;
}
private PatternRegistrationView CreatePatternRegistrationView(FovInfo fovInfo) {
var patternRegistrationView = new PatternRegistrationView(fovInfo);
var patternRegistrationViewModel = new PatternRegistrationViewModel(fovInfo);
patternRegistrationView.DataContext = patternRegistrationViewModel;
return patternRegistrationView;
}
private void UserControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) {
bool isVisible = (bool)e.NewValue;
if (isVisible == true) {
if (!_IsViewInitialized) {
InitializeView();
}
}
}
}
}