일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Binding
- 오류
- 함수
- 마우이
- .NET
- MSSQL
- 바인딩
- 깃허브
- GitHub
- 애니메이션
- HTML
- db
- MVVM
- Maui
- 리엑트
- AnimationController
- Flutter
- typescript
- 플러터
- page
- listview
- Animation
- spring boot
- 파이어베이스
- JavaScript
- React JS
- MS-SQL
- Firebase
- 닷넷
- 자바스크립트
- Today
- Total
개발노트
7. [.NET MAUI] ICommand 사용하기 본문
ICommand 를 이용하여 MainPage에 있는 Label의 Text 값을 변경해보자.
사용할 ICommand 인터페이스는 아래와 같다.
- void Execute(object parameter): 실행될 소스
- bool CanExecute(object parameter): Execute소스가 실행되기 전, bool형을 return 받아 실행여부를 결정한다.
위의 ICommand를 상속받은 Command 클래스를 이용한다.
여기서, Action<>과 Func<>의 차이를 잠깐 살펴보면,
- Action<매개변수 T>은 리턴값이 없는 무명의 Delegate 선언이다.
예시)
public MainPage_ViewModel()
{
Action<int, int> act1 = Plus;
act1(1, 2);
}
public void Plus(int a, int b)
{
System.Console.WriteLine(a + b);
}
- Func<매개변수 T, 리턴값 TResult>은 리턴값이 있는 무명의 Delegate 선언이다.
예시)
public MainPage_ViewModel()
{
Func<int, int, int> func = PlusReturn;
int c = PlusReturn(1, 2);
}
public int PlusReturn(int a, int b)
{
return a + b;
}
1. MainPage_ViewModel.cs (ViewModel) 소스를 오픈한다.
네임스페이스에 ICommand 사용을 위한 Windows.Input을 추가한다.
using System.Windows.Input; //ICommand 인터페이스 사용을 위한 네임스페이스 추가
2. ICommand 인터페이스 작성
public ICommand Set_Label10 { get; set; }
public MainPage_ViewModel()
{
Set_Label10 = new Command(() =>
{
//Execute
_Row_Column = "1,0";
OnPropertyChanged("Row_Column");
},
() =>
{
//CanExecute
return true; //조건이 없기때문에 무조건 실행되도록 true로 리턴한다.
});
}
2-1) ICommand를 멤버변수로 선언하고 (Set_Label10)
2-2) MainPage_ViewModel 생성자 선언문 안에 Set_Label10의 Command를 람다식으로 작성한다.
2-3) Grid중 Row = 1, Column = 0을 클릭했을때 발생할 Command이기 때문에 _Row_Column 값을 "1,0"으로 바꿔준다.
2-4) OnPropertyChanged로 "Row_Column"의 값이 바뀌었음을 알린다.
2-5) CanExecute 에는 Execute가 실행되어야할 조건이 없기 때문에 true를 준다.
3. MainPage.xaml을 오픈한 뒤 Button의 Command Property를 아래와 같이 수정해준다.
3-1) ResourceDictionary를 사용하는 경우
<Button Grid.Row="1" Grid.Column="0" Text="1,0"
Command="{Binding Source={StaticResource MainPageVM},Path=Set_Label10}" />
3-2) MainPage.xaml.cs 에 BindingContext = new MainPage_ViewModel(); 를 작성한경우
<Button Grid.Row="1" Grid.Column="0" Text="1,0"
Command="{Binding Set_Label10}" />
4. 빌드하고 클릭해본다.
다음시간에는 INavigation 으로 Page (View)를 전환하는 방법을 설명드리겠습니다.
'앱 개발 > .NET MAUI' 카테고리의 다른 글
9. [.NET MAUI] IValueConverter로 string 형 값을 bool로 변환하기 (0) | 2022.03.16 |
---|---|
8. [.NET MAUI] INavigation 으로 Page(View) 전환하기 (0) | 2022.03.14 |
6. [.NET MAUI] ViewModel 과 View(Page) 바인딩 시키기(MVVM패턴) (0) | 2022.03.08 |
5. [.NET MAUI] Xaml에서 Grid 사용법 (0) | 2022.03.07 |
4. [.NET MAUI] INotifyPropertyChanged 인터페이스 상속하기(MVVM 패턴) (0) | 2022.03.07 |