Dreamine.MVVM.Locators.Wpf 1.0.7
Dreamine.MVVM.Locators.Wpf 사용자 인터페이스 기능과 구성 요소를 제공합니다.
로딩중...
검색중...
일치하는것 없음
Dreamine.MVVM.Locators.Wpf.RegionBinder 클래스 참조

더 자세히 ...

정적 Public 멤버 함수

static void SetRegionName (DependencyObject obj, string? value)
static ? string GetRegionName (DependencyObject obj)
static void Navigate (string regionName, object viewModel)
static void Clear ()

정적 Public 속성

static readonly DependencyProperty RegionNameProperty

정적 Private 멤버 함수

static void OnRegionNameChanged (DependencyObject d, DependencyPropertyChangedEventArgs e)
static void OnRegionLoaded (object sender, RoutedEventArgs e)
static void OnRegionUnloaded (object sender, RoutedEventArgs e)
static void Register (string regionName, ContentControl control)
static void Unregister (string regionName, ContentControl control)
static bool TryGetRegion (string regionName, [NotNullWhen(true)] out ContentControl? control)

정적 Private 속성

static readonly object SyncRoot = new()
static readonly Dictionary< string, WeakReference< ContentControl > > RegionMap = new()

상세한 설명

이름을 기준으로 ContentControl 영역을 관리합니다.

RegionBinder.cs 파일의 17 번째 라인에서 정의되었습니다.

멤버 함수 문서화

◆ Clear()

void Dreamine.MVVM.Locators.Wpf.RegionBinder.Clear ( )
inlinestatic

등록된 모든 영역을 지웁니다.

RegionBinder.cs 파일의 175 번째 라인에서 정의되었습니다.

176 {
177 lock (SyncRoot)
178 {
179 RegionMap.Clear();
180 }
181 }

다음을 참조함 : RegionMap, SyncRoot.

◆ GetRegionName()

? string Dreamine.MVVM.Locators.Wpf.RegionBinder.GetRegionName ( DependencyObject obj)
inlinestatic

종속성 객체에 설정된 영역 이름을 가져옵니다.

매개변수
obj대상 종속성 객체입니다.
반환값
설정된 영역 이름입니다.

RegionBinder.cs 파일의 106 번째 라인에서 정의되었습니다.

107 {
108 return (string?)obj.GetValue(RegionNameProperty);
109 }

다음을 참조함 : RegionNameProperty.

다음에 의해서 참조됨 : Dreamine.MVVM.Locators.Wpf.RegionBinderHelper.FindRegionControl(), OnRegionLoaded(), OnRegionUnloaded().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ Navigate()

void Dreamine.MVVM.Locators.Wpf.RegionBinder.Navigate ( string regionName,
object viewModel )
inlinestatic

지정한 영역에 ViewModel에 대응하는 View를 표시합니다.

매개변수
regionName대상 영역 이름입니다.
viewModel표시할 ViewModel입니다.
예외
ArgumentExceptionregionName 이 비어 있는 경우 발생합니다.
InvalidOperationException영역 또는 대응 View를 찾지 못한 경우 발생합니다.

RegionBinder.cs 파일의 151 번째 라인에서 정의되었습니다.

152 {
153 if (string.IsNullOrWhiteSpace(regionName))
154 {
155 throw new ArgumentException("Region name must not be empty.", nameof(regionName));
156 }
157
158 if (!TryGetRegion(regionName, out ContentControl? control))
159 {
160 throw new InvalidOperationException($"Region \"{regionName}\" is not registered.");
161 }
162
163 var view = ViewModelBinder.ResolveView(viewModel);
164 control.Content = view;
165 }

다음을 참조함 : Dreamine.MVVM.Locators.Wpf.ViewModelBinder.ResolveView(), TryGetRegion().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnRegionLoaded()

void Dreamine.MVVM.Locators.Wpf.RegionBinder.OnRegionLoaded ( object sender,
RoutedEventArgs e )
inlinestaticprivate

영역 컨트롤이 로드되면 다시 등록합니다.

매개변수
sender로드된 객체입니다.
e라우트 이벤트 정보입니다.

RegionBinder.cs 파일의 254 번째 라인에서 정의되었습니다.

255 {
256 if (sender is ContentControl control)
257 {
258 string? regionName = GetRegionName(control);
259 if (!string.IsNullOrWhiteSpace(regionName))
260 {
261 Register(regionName, control);
262 }
263 }
264 }

다음을 참조함 : GetRegionName(), Register().

다음에 의해서 참조됨 : OnRegionNameChanged().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnRegionNameChanged()

void Dreamine.MVVM.Locators.Wpf.RegionBinder.OnRegionNameChanged ( DependencyObject d,
DependencyPropertyChangedEventArgs e )
inlinestaticprivate

영역 이름 변경에 따라 컨트롤 등록과 수명 주기 이벤트 구독을 갱신합니다.

매개변수
d변경된 종속성 객체입니다.
e변경 이벤트 정보입니다.

RegionBinder.cs 파일의 207 번째 라인에서 정의되었습니다.

208 {
209 if (d is not ContentControl control)
210 {
211 return;
212 }
213
214 if (e.OldValue is string oldName)
215 {
216 Unregister(oldName, control);
217 }
218
219 control.Loaded -= OnRegionLoaded;
220 control.Unloaded -= OnRegionUnloaded;
221
222 if (e.NewValue is string name && !string.IsNullOrWhiteSpace(name))
223 {
224 Register(name, control);
225 control.Loaded += OnRegionLoaded;
226 control.Unloaded += OnRegionUnloaded;
227 }
228 }

다음을 참조함 : OnRegionLoaded(), OnRegionUnloaded(), Register(), Unregister().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnRegionUnloaded()

void Dreamine.MVVM.Locators.Wpf.RegionBinder.OnRegionUnloaded ( object sender,
RoutedEventArgs e )
inlinestaticprivate

영역 컨트롤이 언로드되면 등록을 해제합니다.

매개변수
sender언로드된 객체입니다.
e라우트 이벤트 정보입니다.

RegionBinder.cs 파일의 290 번째 라인에서 정의되었습니다.

291 {
292 if (sender is ContentControl control)
293 {
294 string? regionName = GetRegionName(control);
295 if (!string.IsNullOrWhiteSpace(regionName))
296 {
297 Unregister(regionName, control);
298 }
299 }
300 }

다음을 참조함 : GetRegionName(), Unregister().

다음에 의해서 참조됨 : OnRegionNameChanged().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ Register()

void Dreamine.MVVM.Locators.Wpf.RegionBinder.Register ( string regionName,
ContentControl control )
inlinestaticprivate

영역 이름과 컨트롤의 약한 참조를 등록합니다.

매개변수
regionName영역 이름입니다.
control등록할 컨트롤입니다.

RegionBinder.cs 파일의 326 번째 라인에서 정의되었습니다.

327 {
328 lock (SyncRoot)
329 {
330 RegionMap[regionName] = new WeakReference<ContentControl>(control);
331 }
332 }

다음을 참조함 : RegionMap, SyncRoot.

다음에 의해서 참조됨 : OnRegionLoaded(), OnRegionNameChanged().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ SetRegionName()

void Dreamine.MVVM.Locators.Wpf.RegionBinder.SetRegionName ( DependencyObject obj,
string? value )
inlinestatic

종속성 객체에 영역 이름을 설정합니다.

매개변수
obj대상 종속성 객체입니다.
value설정할 영역 이름입니다.

RegionBinder.cs 파일의 77 번째 라인에서 정의되었습니다.

78 {
79 obj.SetValue(RegionNameProperty, value);
80 }

다음을 참조함 : RegionNameProperty.

◆ TryGetRegion()

bool Dreamine.MVVM.Locators.Wpf.RegionBinder.TryGetRegion ( string regionName,
[NotNullWhen(true)] out ContentControl? control )
inlinestaticprivate

살아 있는 등록 컨트롤을 영역 이름으로 가져옵니다.

매개변수
regionName찾을 영역 이름입니다.
control찾은 컨트롤입니다.
반환값
살아 있는 컨트롤을 찾았으면 true입니다.

RegionBinder.cs 파일의 403 번째 라인에서 정의되었습니다.

404 {
405 lock (SyncRoot)
406 {
407 if (!RegionMap.TryGetValue(regionName, out WeakReference<ContentControl>? reference))
408 {
409 control = null;
410 return false;
411 }
412
413 if (reference.TryGetTarget(out control))
414 {
415 return true;
416 }
417
418 RegionMap.Remove(regionName);
419 control = null;
420 return false;
421 }
422 }

다음을 참조함 : RegionMap, SyncRoot.

다음에 의해서 참조됨 : Navigate().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ Unregister()

void Dreamine.MVVM.Locators.Wpf.RegionBinder.Unregister ( string regionName,
ContentControl control )
inlinestaticprivate

현재 등록된 컨트롤이 일치하면 영역 등록을 제거합니다.

매개변수
regionName영역 이름입니다.
control등록 해제할 컨트롤입니다.

RegionBinder.cs 파일의 358 번째 라인에서 정의되었습니다.

359 {
360 lock (SyncRoot)
361 {
362 if (RegionMap.TryGetValue(regionName, out WeakReference<ContentControl>? reference) &&
363 reference.TryGetTarget(out ContentControl? registeredControl) &&
364 ReferenceEquals(registeredControl, control))
365 {
366 RegionMap.Remove(regionName);
367 }
368 }
369 }

다음을 참조함 : RegionMap, SyncRoot.

다음에 의해서 참조됨 : OnRegionNameChanged(), OnRegionUnloaded().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ RegionMap

readonly Dictionary<string, WeakReference<ContentControl> > Dreamine.MVVM.Locators.Wpf.RegionBinder.RegionMap = new()
staticprivate

Region Map 값을 보관합니다.

RegionBinder.cs 파일의 36 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : Clear(), Register(), TryGetRegion(), Unregister().

◆ RegionNameProperty

readonly DependencyProperty Dreamine.MVVM.Locators.Wpf.RegionBinder.RegionNameProperty
static
초기값:
=
DependencyProperty.RegisterAttached(
"RegionName",
typeof(string),
typeof(RegionBinder),
new PropertyMetadata(null, OnRegionNameChanged))
static void OnRegionNameChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)

Region Name Property 값을 보관합니다.

RegionBinder.cs 파일의 46 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : GetRegionName(), SetRegionName().

◆ SyncRoot

readonly object Dreamine.MVVM.Locators.Wpf.RegionBinder.SyncRoot = new()
staticprivate

Sync Root 값을 보관합니다.

RegionBinder.cs 파일의 27 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : Clear(), Register(), TryGetRegion(), Unregister().


이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: