SampleCrossUi.Wpf
1.0.0.0
SampleCrossUi.Wpf 사용 방법을 보여 주는 예제 프로젝트입니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
MainViewModel.cs
이 파일의 문서화 페이지로 가기
1
using
System.Collections.ObjectModel;
2
using
Dreamine.MVVM.ViewModels;
3
using
Dreamine.UI.Wpf.Controls.Navigation;
4
using
Dreamine.UI.Wpf.Controls.ViewRegion;
5
using
SampleCrossUi.Shared.ViewModels;
6
7
namespace
SampleCrossUi.Wpf.ViewModels
;
8
17
public
class
MainViewModel
: ViewModelBase
18
{
27
private
object
?
_currentView
;
36
public
object
?
CurrentView
{
get
=>
_currentView
;
set
=> SetProperty(ref
_currentView
, value); }
37
46
public
ObservableCollection<ButtonData>
NavButtons
{
get
; } =
new
();
47
56
private
string
?
_currentPageName
;
57
98
public
MainViewModel
(CounterViewModel counterVm, LightBulbViewModel lightBulbVm, ControlsViewModel controlsVm,
PopupViewModel
popupVm)
99
{
100
// 탭 이름과 전환할 ViewModel을 한 곳에 모아 데이터 기반으로 NavButtons를 생성한다.
101
var pages =
new
(
string
Content,
object
ViewModel)[]
102
{
103
(
"Counter"
, counterVm),
104
(
"Light Bulb"
, lightBulbVm),
105
(
"Controls"
, controlsVm),
106
(
"Popup"
, popupVm),
107
};
108
109
// ViewSwitcher.NotifyShown/NotifyHidden 데모: 탭이 전환될 때마다 해당 ViewModel이
110
// IActivatable/IVisibilityAware를 구현하면 Activate/Deactivate, OnShown/OnHidden이 호출된다.
111
foreach
(var page
in
pages)
112
ViewSwitcher.RegisterViewModel(page.Content, page.ViewModel);
113
114
for
(
int
i = 0; i < pages.Length; i++)
115
{
116
var index = i;
117
var name = pages[i].Content;
118
var vm = pages[i].ViewModel;
119
120
// VsNavigationHelper.Create는 Dreamine.UI.Wpf.Controls.Navigation에서 제공하는
121
// 표준 ButtonData 팩토리로, 직접 ButtonData를 new해서 스타일을 반복 지정하지 않아도 된다.
122
NavButtons
.Add(VsNavigationHelper.Create(
123
name,
124
new
RelayCommand(() =>
SwitchTo
(name, vm, index)),
125
isSelected: index == 0));
126
}
127
128
SwitchTo
(pages[0].Content, pages[0].ViewModel, 0);
129
}
130
163
private
void
SwitchTo
(
string
name,
object
vm,
int
index)
164
{
165
if
(
_currentPageName
!=
null
)
166
ViewSwitcher.NotifyHidden(
_currentPageName
);
167
168
CurrentView
= vm;
169
SelectNav
(index);
170
ViewSwitcher.NotifyShown(name);
171
_currentPageName
= name;
172
}
173
190
private
void
SelectNav
(
int
index)
191
{
192
for
(
int
i = 0; i <
NavButtons
.Count; i++)
193
NavButtons
[i].IsSelected = i == index;
194
}
195
}
SampleCrossUi.Wpf.ViewModels
Definition
MainViewModel.cs:7
SampleCrossUi.Wpf.ViewModels.MainViewModel.SwitchTo
void SwitchTo(string name, object vm, int index)
Definition
MainViewModel.cs:163
SampleCrossUi.Wpf.ViewModels.MainViewModel.CurrentView
object? CurrentView
Definition
MainViewModel.cs:36
SampleCrossUi.Wpf.ViewModels.MainViewModel.SelectNav
void SelectNav(int index)
Definition
MainViewModel.cs:190
SampleCrossUi.Wpf.ViewModels.MainViewModel.MainViewModel
MainViewModel(CounterViewModel counterVm, LightBulbViewModel lightBulbVm, ControlsViewModel controlsVm, PopupViewModel popupVm)
Definition
MainViewModel.cs:98
SampleCrossUi.Wpf.ViewModels.MainViewModel.NavButtons
ObservableCollection< ButtonData > NavButtons
Definition
MainViewModel.cs:46
SampleCrossUi.Wpf.ViewModels.MainViewModel._currentView
object? _currentView
Definition
MainViewModel.cs:27
SampleCrossUi.Wpf.ViewModels.MainViewModel._currentPageName
string? _currentPageName
Definition
MainViewModel.cs:56
SampleCrossUi.Wpf.ViewModels.PopupViewModel
Definition
PopupViewModel.cs:15
ViewModels
MainViewModel.cs
다음에 의해 생성됨 :
1.17.0