Dreamine.MVVM.Behaviors.Wpf 1.0.5
Dreamine.MVVM.Behaviors.Wpf 산업 자동화 및 I/O 기능을 제공합니다.
로딩중...
검색중...
일치하는것 없음
BehaviorCollection.cs
이 파일의 문서화 페이지로 가기
1using Dreamine.MVVM.Behaviors.Core.Base;
2using Dreamine.MVVM.Behaviors.Core.Interfaces;
3using System.Diagnostics;
4using System.Windows;
5using System.Windows.Markup;
6
8{
17 public sealed class BehaviorCollection : FreezableCollection<DependencyObject>, IAttachedObject
18 {
27 private DependencyObject ? _associatedObject; // 연결된 대상 객체
36 public DependencyObject AssociatedObject => _associatedObject!; // 연결된 대상 객체의 접근자
37
62 public void Attach(DependencyObject associatedObject)
63 {
64 // 이미 다른 객체에 연결되었으면 예외 발생
65 if (_associatedObject != associatedObject)
66 {
67 // 이미 다른 객체에 연결된 상태라면 오류 처리
68 if (_associatedObject != null)
69 throw new InvalidOperationException("Cannot attach a collection to more than one object.");
70
71 _associatedObject = associatedObject; // 새로운 객체에 연결
72
73 foreach (var item in this)
74 {
75 if (item is IAttachedObject attachedObject)
76 {
77 attachedObject.Attach(associatedObject);
78 }
79 }
80 }
81 }
82
91 public void Detach()
92 {
93 foreach (var item in this)
94 {
95 if (item is IAttachedObject attachedObject)
96 {
97 attachedObject.Detach();
98 }
99 }
100
101 _associatedObject = null; // 분리 후 `associatedObject`를 null로 설정
102 }
103 }
104}