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 { /// /// 서브메뉴 : 캠 패턴 등록 뷰 /// SubMenuCamPatternRegistrationView.xaml behind code /// public partial class SubMenuCamPatternRegistrationView : UserControl { private static readonly Logger _Logger = new Logger("SubMenuCamPatternRegistrationView"); private IDisposable _EventDisposable; private bool _IsViewInitialized = false; /// /// 생성자 /// 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(); 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(); } } } } }