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

더 자세히 ...

Dreamine.UI.Wpf.Controls.DreamineTabControl에 대한 상속 다이어그램 :
Dreamine.UI.Wpf.Controls.DreamineTabControl에 대한 협력 다이어그램:

Public 멤버 함수

 DreamineTabControl ()
void RemoveTab (TabItem tab)
void AddTab (string title, UIElement content, ImageSource? icon=null, bool isClosable=true)

정적 Public 속성

static readonly DependencyProperty CloseTabCommandProperty

속성

ICommand CloseTabCommand [get, set]

Private 멤버 함수

void OnTabItemDoubleClick (object sender, MouseButtonEventArgs e)
void AttachContextMenu (VsTabItem tab)
void OnCloseTabClick (object sender, RoutedEventArgs e)
void OnDetachTabClick (object sender, RoutedEventArgs e)
bool TryGetTabItemFromContextMenu (object sender, out VsTabItem tab)
FindParent< T > (DependencyObject child)
void DetachTab (VsTabItem tab)

정적 Private 멤버 함수

static DreamineTabControl ()

상세한 설명

탭 닫기, 분리 창, 컨텍스트 메뉴와 전용 스타일을 제공하는 사용자 지정 탭 컨트롤입니다.

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

생성자 & 소멸자 문서화

◆ DreamineTabControl() [1/2]

Dreamine.UI.Wpf.Controls.DreamineTabControl.DreamineTabControl ( )
inlinestaticprivate

기본 스타일 키를 재정의하고 탭 컨트롤 테마 리소스를 병합합니다.

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

29 {
30 DefaultStyleKeyProperty.OverrideMetadata(typeof(DreamineTabControl),
31 new FrameworkPropertyMetadata(typeof(DreamineTabControl)));
32
33 var uri = new Uri("/Dreamine.UI.Wpf.Themes;component/DreamineTabControlStyle.xaml", UriKind.RelativeOrAbsolute);
34
35 if (Application.Current != null)
36 {
37 bool alreadyAdded = Application.Current.Resources.MergedDictionaries
38 .OfType<ResourceDictionary>()
39 .Any(x => x.Source != null && x.Source.Equals(uri));
40
41 if (!alreadyAdded)
42 {
43 var dict = new ResourceDictionary { Source = uri };
44 Application.Current.Resources.MergedDictionaries.Add(dict);
45 }
46 }
47 }

다음을 참조함 : DreamineTabControl().

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

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

◆ DreamineTabControl() [2/2]

Dreamine.UI.Wpf.Controls.DreamineTabControl.DreamineTabControl ( )
inline

탭 컨트롤을 만들고 닫기·분리 동작 및 컨텍스트 메뉴 연결을 초기화합니다.

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

58 {
59 this.PreviewMouseDoubleClick += OnTabItemDoubleClick;
60
61 CloseTabCommand = new RelayCommand<TabItem>(tab =>
62 {
63 if (tab != null && Items.Contains(tab))
64 {
65 Items.Remove(tab);
66 }
67 });
68
69 Loaded += (s, e) =>
70 {
71 foreach (var tab in Items.OfType<VsTabItem>())
72 {
73 AttachContextMenu(tab);
74 }
75
76 ItemContainerGenerator.ItemsChanged += (s2, e2) =>
77 {
78 foreach (var item in Items.OfType<VsTabItem>())
79 {
80 if (item.ContextMenu == null)
81 AttachContextMenu(item);
82 }
83 };
84 };
85 }

다음을 참조함 : AttachContextMenu(), CloseTabCommand, OnTabItemDoubleClick().

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

멤버 함수 문서화

◆ AddTab()

void Dreamine.UI.Wpf.Controls.DreamineTabControl.AddTab ( string title,
UIElement content,
ImageSource? icon = null,
bool isClosable = true )
inline

지정한 제목, 콘텐츠, 아이콘과 닫기 설정으로 새 탭을 추가하고 선택합니다.

매개변수
title탭 헤더 제목입니다.
content탭에 표시할 UI 콘텐츠입니다.
icon선택적 탭 아이콘입니다.
isClosable사용자가 탭을 닫을 수 있는지 나타냅니다.
예외
ArgumentNullExceptioncontent 가 null이고 WPF 컬렉션 정책이 이를 허용하지 않으면 발생할 수 있습니다.

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

453 {
454 var newTab = new VsTabItem
455 {
456 Header = title,
457 Content = content,
458 Icon = icon!,
459 IsClosable = isClosable,
460 };
461
462 Items.Add(newTab);
463 SelectedItem = newTab;
464 }

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

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

◆ AttachContextMenu()

void Dreamine.UI.Wpf.Controls.DreamineTabControl.AttachContextMenu ( VsTabItem tab)
inlineprivate

탭에 분리 및 닫기 메뉴 항목을 포함하는 컨텍스트 메뉴를 연결합니다.

매개변수
tab메뉴를 연결할 탭입니다.

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

141 {
142 var menu = new ContextMenu();
143
144 var detach = new MenuItem { Header = "Detach Tab" };
145 detach.Click += (s, e) => DetachTab(tab);
146
147 var close = new MenuItem { Header = "CloseAsync Tab" };
148 close.Click += (s, e) => RemoveTab(tab);
149
150 menu.Items.Add(detach);
151 menu.Items.Add(close);
152
153 tab.ContextMenu = menu;
154 }

다음을 참조함 : DetachTab(), RemoveTab().

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

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

◆ DetachTab()

void Dreamine.UI.Wpf.Controls.DreamineTabControl.DetachTab ( VsTabItem tab)
inlineprivate

탭 콘텐츠를 별도 부동 창으로 옮기고 창이 닫히면 새 탭으로 복원합니다.

매개변수
tab분리할 탭입니다.
예외
InvalidOperationException부동 창을 현재 애플리케이션 상태에서 표시할 수 없으면 발생할 수 있습니다.

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

377 {
378 if (tab?.Content is not UIElement content)
379 return;
380
381 var header = tab.Header;
382 var icon = tab.Icon;
383 var isClosable = tab.IsClosable;
384
385 var floatWindow = new Window
386 {
387 Title = header?.ToString(),
388 Content = content,
389 Width = 800,
390 Height = 600,
391 Icon = icon,
392 };
393
394 floatWindow.Closed += (s, e) =>
395 {
396 // Restore tab when floating window is closed
397 AddTab(header?.ToString()!, content, icon, isClosable);
398 };
399
400 Items.Remove(tab);
401 floatWindow.Show();
402 }

다음을 참조함 : AddTab(), Dreamine.UI.Wpf.Controls.VsTabItem.Icon, Dreamine.UI.Wpf.Controls.VsTabItem.IsClosable.

다음에 의해서 참조됨 : AttachContextMenu(), OnDetachTabClick(), OnTabItemDoubleClick().

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

◆ FindParent< T >()

T Dreamine.UI.Wpf.Controls.DreamineTabControl.FindParent< T > ( DependencyObject child)
inlineprivate

시각적 트리를 올라가 지정한 형식의 첫 부모를 찾습니다.

템플릿 파라메터
T찾을 부모 종속성 개체 형식입니다.
매개변수
child탐색을 시작할 자식입니다.
반환값
찾은 부모이며 없으면 런타임상 null입니다.
예외
InvalidOperationException탐색 중인 개체가 시각적 트리 개체가 아니면 WPF에서 발생할 수 있습니다.
타입 한정자들
T :DependencyObject 

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

340 : DependencyObject
341 {
342 while (child != null)
343 {
344 if (child is T parent)
345 return parent;
346
347 child = VisualTreeHelper.GetParent(child);
348 }
349 return null!;
350 }

◆ OnCloseTabClick()

void Dreamine.UI.Wpf.Controls.DreamineTabControl.OnCloseTabClick ( object sender,
RoutedEventArgs e )
inlineprivate

컨텍스트 메뉴의 닫기 요청을 처리하고 탭 콘텐츠가 해제 가능하면 해제합니다.

매개변수
sender이벤트를 발생시킨 메뉴 항목입니다.
e라우트 이벤트 데이터입니다.

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

181 {
182 if (TryGetTabItemFromContextMenu(sender, out var tab))
183 {
184 RemoveTab(tab);
185
186 if (tab.Content is IDisposable disposable)
187 {
188 disposable.Dispose();
189 }
190
191 tab.Content = null;
192 }
193 }

다음을 참조함 : RemoveTab(), TryGetTabItemFromContextMenu().

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

◆ OnDetachTabClick()

void Dreamine.UI.Wpf.Controls.DreamineTabControl.OnDetachTabClick ( object sender,
RoutedEventArgs e )
inlineprivate

컨텍스트 메뉴의 분리 요청을 처리합니다.

매개변수
sender이벤트를 발생시킨 메뉴 항목입니다.
e라우트 이벤트 데이터입니다.

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

246 {
247 if (TryGetTabItemFromContextMenu(sender, out var tab))
248 {
249 DetachTab(tab);
250 }
251 }

다음을 참조함 : DetachTab(), TryGetTabItemFromContextMenu().

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

◆ OnTabItemDoubleClick()

void Dreamine.UI.Wpf.Controls.DreamineTabControl.OnTabItemDoubleClick ( object sender,
MouseButtonEventArgs e )
inlineprivate

선택된 탭을 더블클릭하면 별도 부동 창으로 분리합니다.

매개변수
sender이벤트를 발생시킨 탭 컨트롤입니다.
e원본 입력 요소와 클릭 정보를 제공하는 이벤트 데이터입니다.

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

112 {
113 if (e.OriginalSource is DependencyObject originalSource)
114 {
115 var tab = FindParent<VsTabItem>(originalSource);
116 if (tab != null && tab.IsSelected)
117 {
118 DetachTab(tab);
119 e.Handled = true;
120 }
121 }
122 }

다음을 참조함 : DetachTab().

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

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

◆ RemoveTab()

void Dreamine.UI.Wpf.Controls.DreamineTabControl.RemoveTab ( TabItem tab)
inline

탭이 현재 항목 컬렉션에 있으면 제거합니다.

매개변수
tab제거할 탭입니다.

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

212 {
213 if (tab == null) return;
214
215 if (Items.Contains(tab))
216 {
217 Items.Remove(tab);
218 }
219 }

다음에 의해서 참조됨 : AttachContextMenu(), OnCloseTabClick().

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

◆ TryGetTabItemFromContextMenu()

bool Dreamine.UI.Wpf.Controls.DreamineTabControl.TryGetTabItemFromContextMenu ( object sender,
out VsTabItem tab )
inlineprivate

컨텍스트 메뉴 이벤트 원본에서 소유 탭을 찾습니다.

매개변수
sender컨텍스트 메뉴 이벤트 원본입니다.
tab찾은 탭을 반환합니다.
반환값
탭을 찾으면 true입니다.

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

286 {
287 tab = null!;
288
289 if (sender is MenuItem menuItem &&
290 menuItem.Parent is ContextMenu ctx &&
291 ctx.PlacementTarget is DependencyObject target)
292 {
293 tab = FindParent<VsTabItem>(target);
294 return tab != null;
295 }
296
297 return false;
298 }

다음에 의해서 참조됨 : OnCloseTabClick(), OnDetachTabClick().

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

멤버 데이터 문서화

◆ CloseTabCommandProperty

readonly DependencyProperty Dreamine.UI.Wpf.Controls.DreamineTabControl.CloseTabCommandProperty
static
초기값:
=
DependencyProperty.Register(nameof(CloseTabCommand), typeof(ICommand), typeof(DreamineTabControl), new PropertyMetadata(null))

탭 닫기 명령 종속성 속성입니다.

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

속성 문서화

◆ CloseTabCommand

ICommand Dreamine.UI.Wpf.Controls.DreamineTabControl.CloseTabCommand
getset

탭을 닫는 명령을 가져오거나 설정합니다.

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

486 {
487 get => (ICommand)GetValue(CloseTabCommandProperty);
488 set => SetValue(CloseTabCommandProperty, value);
489 }

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


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