using System; using System.Collections.Generic; using System.Linq; 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; using VisionCommon; using VisionUI; using VisionUI.Camera; using VisionUI.Pattern; namespace WeldingCommon.Views.Manual { /// /// UCManualModelFinder.xaml에 대한 상호 작용 논리 /// public partial class UCManualModelFinder : UserControl { private UCManualModelFinderViewModel _ViewModel; private FovInfo _FovInfo; private UserControl _cameraView; public UCManualModelFinder(UCManualModelFinderViewModel viewModel) { InitializeComponent(); _ViewModel = viewModel; DataContext = _ViewModel; _FovInfo = VisionRecipeManager.GetFovInfos().FirstOrDefault(); //CreateScannerCameraView(); } private void CreateScannerCameraView() { if (gridScannerCameraView.Children.Count == 0) { var fovInfo = VisionRecipeManager.GetFovInfos().FirstOrDefault(); if (fovInfo != null) { _cameraView = IpViewManager.CreateCameraView(fovInfo, eDisplayType.Pattern); gridScannerCameraView.Children.Add(_cameraView); } } } private void uc_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) { bool isVisible = (bool)e.NewValue; if (isVisible == true) { // 끝날 때, Dispose 시키면 아예 지워짐. 처음 시작할 때, 비우고 다시 시작하는 것이 임시방편으로 좋을 듯 함. Dispose(); RefreshVisionRecipes(); CreateCameraView(); CreatePatternListView(); } else { CameraUcManager.Instance.StopLiveAll(); } } private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs e) { var viewModel = DataContext as UCManualModelFinderViewModel; FileSystemItem _selectItem = (FileSystemItem)viewModel.SelectedItem; if (_selectItem != null) _selectItem.IsSelected = false; // Update selection state if (e.NewValue is FileSystemItem selectedItem) { selectedItem.IsSelected = true; viewModel.SelectedItem = selectedItem; } if (e.OldValue is FileSystemItem oldItem) { oldItem.IsSelected = false; } } private void RefreshVisionRecipes() { _FovInfo = VisionRecipeManager.GetFovInfo(_FovInfo); } private void CreateCameraView() { _cameraView = IpViewManager.CreateCameraView(_FovInfo, eDisplayType.Pattern); gridScannerCameraView.Children.Add(_cameraView); } private void CreatePatternListView() { var patterrnListView = new PatternListView(_FovInfo); var patternSettingViewModel = IpViewManager.CreateFovPatternListViewModel(_FovInfo, _cameraView); patterrnListView.DataContext = patternSettingViewModel; gridPatternListView.Children.Add(patterrnListView); } private void Dispose() { foreach (var child in gridScannerCameraView.Children) { if (child is UserControl view) { IpViewManager.DisposeCameraView(view); } } gridScannerCameraView.Children.Clear(); foreach (var child in gridPatternListView.Children) { if (child is PatternListView patternListView) { patternListView = null; } } gridPatternListView.Children.Clear(); } } }