■ DrawingView 엘리먼트의 LineWidth/LineColor/Lines 속성을 사용하는 방법을 보여준다. ▶ LineCollection.cs
|
using System.Collections.ObjectModel; using CommunityToolkit.Maui.Core; namespace TestProject; /// <summary> /// 라인 컬렉션 /// </summary> public class LineCollection : ObservableCollection<IDrawingLine> { } |
▶ MainPage.xaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
<?xml version="1.0" encoding="utf-8" ?> <ContentPage x:Class="TestProject.MainPage" xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit" xmlns:local="clr-namespace:TestProject"> <ContentPage.Resources> <local:LineCollection x:Key="LineCollectionKey" /> </ContentPage.Resources> <toolkit:DrawingView Margin="10" Background="Beige" LineWidth="5" LineColor="Blue" Lines="{StaticResource LineCollectionKey}" /> </ContentPage> |
▶ MauiProgram.cs
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 32 33 34 35 36 37 38 39 40 41 42
|
using CommunityToolkit.Maui; namespace TestProject; /// <summary> /// MAUI 프로그램 /// </summary> public static class MauiProgram { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Public #region MAUI 앱 생성하기 - CreateMauiApp() /// <summary> /// MAUI 앱 생성하기 /// </summary> /// <returns>MAUI 앱</returns> public static MauiApp CreateMauiApp() { MauiAppBuilder builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() .UseMauiCommunityToolkit() .ConfigureFonts ( fontCollection => { fontCollection.AddFont("OpenSans-Regular.ttf" , "OpenSansRegular" ); fontCollection.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); } ); return builder.Build(); } #endregion } |
TestProject.zip
■ UniformItemsLayout 엘리먼트의 MaxColumns 속성을 사용해 최대 컬럼 수를 설정하는 방법을 보여준다. ▶ MainPage.xaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
<?xml version="1.0" encoding="utf-8" ?> <ContentPage x:Class="TestProject.MainPage" xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"> <toolkit:UniformItemsLayout HorizontalOptions="Center" VerticalOptions="Center" Padding="10" MaxColumns="2"> <BoxView Margin="10" WidthRequest="25" HeightRequest="25" BackgroundColor="Blue" /> <BoxView Margin="10" WidthRequest="25" HeightRequest="25" BackgroundColor="Yellow" /> <BoxView Margin="10" WidthRequest="25" HeightRequest="25" BackgroundColor="Red" /> <BoxView Margin="10" WidthRequest="25" HeightRequest="25" BackgroundColor="Black" /> </toolkit:UniformItemsLayout> </ContentPage> |
▶ MauiProgram.cs
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 32 33 34 35 36 37 38 39 40 41 42
|
using CommunityToolkit.Maui; namespace TestProject; /// <summary> /// MAUI 프로그램 /// </summary> public static class MauiProgram { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Public #region MAUI 앱 생성하기 - CreateMauiApp() /// <summary> /// MAUI 앱 생성하기 /// </summary> /// <returns>MAUI 앱</returns> public static MauiApp CreateMauiApp() { MauiAppBuilder builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() .UseMauiCommunityToolkit() .ConfigureFonts ( fontCollection => { fontCollection.AddFont("OpenSans-Regular.ttf" , "OpenSansRegular" ); fontCollection.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); } ); return builder.Build(); } #endregion } |
TestProject.zip
■ UniformItemsLayout 클래스를 사용하는 방법을 보여준다. ▶ MainPage.xaml
|
<?xml version="1.0" encoding="utf-8" ?> <ContentPage x:Class="TestProject.MainPage" xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"> </ContentPage> |
▶ MainPage.xaml.cs
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 32 33 34 35 36 37 38 39
|
using CommunityToolkit.Maui.Layouts; namespace TestProject; /// <summary> /// 메인 페이지 /// </summary> public partial class MainPage : ContentPage { //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor ////////////////////////////////////////////////////////////////////////////////////////// Public #region 생성자 - MainPage() /// <summary> /// 생성자 /// </summary> public MainPage() { InitializeComponent(); UniformItemsLayout layout = new UniformItemsLayout(); layout.HorizontalOptions = LayoutOptions.Center; layout.VerticalOptions = LayoutOptions.Center; layout.Padding = new Thickness(10); layout.Children.Add(new BoxView { Margin = 10, WidthRequest = 25, HeightRequest = 25, BackgroundColor = Colors.Blue }); layout.Children.Add(new BoxView { Margin = 10, WidthRequest = 25, HeightRequest = 25, BackgroundColor = Colors.Yellow }); layout.Children.Add(new BoxView { Margin = 10, WidthRequest = 25, HeightRequest = 25, BackgroundColor = Colors.Red }); layout.Children.Add(new BoxView { Margin = 10, WidthRequest = 25, HeightRequest = 25, BackgroundColor = Colors.Black }); Content = layout; } #endregion } |
▶ MauiProgram.cs
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 32 33 34 35 36 37 38 39 40 41 42
|
using CommunityToolkit.Maui; namespace TestProject; /// <summary> /// MAUI 프로그램 /// </summary> public static class MauiProgram { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Public #region MAUI 앱 생성하기 - CreateMauiApp() /// <summary> /// MAUI 앱 생성하기 /// </summary> /// <returns>MAUI 앱</returns> public static MauiApp CreateMauiApp() { MauiAppBuilder builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() .UseMauiCommunityToolkit() .ConfigureFonts ( fontCollection => { fontCollection.AddFont("OpenSans-Regular.ttf" , "OpenSansRegular" ); fontCollection.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); } ); return builder.Build(); } #endregion } |
TestProject.zip
■ UniformItemsLayout 엘리먼트를 사용하는 방법을 보여준다. ▶ MainPage.xaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
<?xml version="1.0" encoding="utf-8" ?> <ContentPage x:Class="TestProject.MainPage" xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"> <toolkit:UniformItemsLayout HorizontalOptions="Center" VerticalOptions="Center" Padding="10"> <BoxView Margin="10" WidthRequest="25" HeightRequest="25" BackgroundColor="Blue" /> <BoxView Margin="10" WidthRequest="25" HeightRequest="25" BackgroundColor="Yellow" /> <BoxView Margin="10" WidthRequest="25" HeightRequest="25" BackgroundColor="Red" /> <BoxView Margin="10" WidthRequest="25" HeightRequest="25" BackgroundColor="Black" /> </toolkit:UniformItemsLayout> </ContentPage> |
▶ MauiProgram.cs
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 32 33 34 35 36 37 38 39 40 41 42
|
using CommunityToolkit.Maui; namespace TestProject; /// <summary> /// MAUI 프로그램 /// </summary> public static class MauiProgram { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Public #region MAUI 앱 생성하기 - CreateMauiApp() /// <summary> /// MAUI 앱 생성하기 /// </summary> /// <returns>MAUI 앱</returns> public static MauiApp CreateMauiApp() { MauiAppBuilder builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() .UseMauiCommunityToolkit() .ConfigureFonts ( fontCollection => { fontCollection.AddFont("OpenSans-Regular.ttf" , "OpenSansRegular" ); fontCollection.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); } ); return builder.Build(); } #endregion } |
TestProject.zip
■ ServiceCollectionExtensions 클래스의 AddTransientWithShellRoute 확장 메소드를 사용해 MVVM 패턴에서 의존성 주입을 설정하는 방법을 보여준다. ▶ VIEWMODEL/BaseViewModel.cs
|
using CommunityToolkit.Mvvm.ComponentModel; namespace TestProject; /// <summary> /// 베이스 뷰 모델 /// </summary> [INotifyPropertyChanged] public abstract partial class BaseViewModel { } |
▶ VIEWMODEL/MainPageViewModel.cs
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; namespace TestProject { /// <summary> /// 메인 페이지 뷰 모델 /// </summary> public partial class MainPageViewModel : BaseViewModel { //////////////////////////////////////////////////////////////////////////////////////////////////// Field ////////////////////////////////////////////////////////////////////////////////////////// Private #region Field /// <summary> /// 입력 텍스트 /// </summary> [ObservableProperty] private string inputText = null; #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor ////////////////////////////////////////////////////////////////////////////////////////// Public #region 생성자 - MainPageViewModel() /// <summary> /// 생성자 /// </summary> public MainPageViewModel() { } #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Private #region 초기화하기 - Reset() /// <summary> /// 초기화하기 /// </summary> [RelayCommand] private void Reset() { InputText = string.Empty; } #endregion #region 상세 페이지로 이동하기 - MoveDetailPage() /// <summary> /// 상세 페이지로 이동하기 /// </summary> [RelayCommand] private async Task MoveDetailPage() { await Shell.Current.GoToAsync("//메인페이지/메인상세페이지"); } #endregion } } |
▶ VIEWMODEL/MainDetailPageViewMode.cs
더 읽기
■ ServiceCollectionExtensions 클래스의 AddTransient 확장 메소드를 사용해 MVVM 패턴에서 의존성 주입을 설정하는 방법을 보여준다. ▶ VIEWMODEL/BaseViewModel.cs
|
using CommunityToolkit.Mvvm.ComponentModel; namespace TestProject; /// <summary> /// 베이스 뷰 모델 /// </summary> [INotifyPropertyChanged] public abstract partial class BaseViewModel { } |
▶ VIEWMODEL/MainPageViewModel.cs
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; namespace TestProject { /// <summary> /// 메인 페이지 뷰 모델 /// </summary> public partial class MainPageViewModel : BaseViewModel { //////////////////////////////////////////////////////////////////////////////////////////////////// Field ////////////////////////////////////////////////////////////////////////////////////////// Private #region Field /// <summary> /// 입력 텍스트 /// </summary> [ObservableProperty] private string inputText = null; #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor ////////////////////////////////////////////////////////////////////////////////////////// Public #region 생성자 - MainPageViewModel() /// <summary> /// 생성자 /// </summary> public MainPageViewModel() { } #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Private #region 초기화하기 - Reset() /// <summary> /// 초기화하기 /// </summary> [RelayCommand] private void Reset() { InputText = string.Empty; } #endregion #region 상세 페이지로 이동하기 - MoveDetailPage() /// <summary> /// 상세 페이지로 이동하기 /// </summary> [RelayCommand] private async Task MoveDetailPage() { await Shell.Current.GoToAsync("//메인페이지/메인상세페이지"); } #endregion } } |
▶ VIEWMODEL/MainDetailPageViewMode.cs
더 읽기
■ ColorConversionExtensions 클래스의 WithYellow 확장 메소드를 사용해 노란색 값을 설정한 색상을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using CommunityToolkit.Maui.Core.Extensions; Color sourceColor = Colors.White; Color targetColor = sourceColor.WithYellow(0.5); |
■ ColorConversionExtensions 클래스의 WithBlackKey 확장 메소드를 사용해 검정색 값을 설정한 색상을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using CommunityToolkit.Maui.Core.Extensions; Color sourceColor = Colors.White; Color targetColor = sourceColor.WithBlackKey(0.5); |
■ ColorConversionExtensions 클래스의 WithMagenta 확장 메소드를 사용해 자홍색 값을 설정한 색상을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using CommunityToolkit.Maui.Core.Extensions; Color sourceColor = Colors.White; Color targetColor = sourceColor.WithMagenta(0.5); |
■ ColorConversionExtensions 클래스의 WithCyan 확장 메소드를 사용해 청록색 값을 설정한 색상을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using CommunityToolkit.Maui.Core.Extensions; Color sourceColor = Colors.White; Color targetColor = sourceColor.WithCyan(0.5); |
■ ColorConversionExtensions 클래스의 WithGreen 확장 메소드를 사용해 녹색 값을 설정한 색상을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using CommunityToolkit.Maui.Core.Extensions; Color sourceColor = Colors.White; Color targetColor = sourceColor.WithGreen(255); |
■ ColorConversionExtensions 클래스의 WithBlue 확장 메소드를 사용해 청색 값을 설정한 색상을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using CommunityToolkit.Maui.Core.Extensions; Color sourceColor = Colors.White; Color targetColor = sourceColor.WithBlue(255); |
■ ColorConversionExtensions 클래스의 WithRed 확장 메소드를 사용해 적색 값을 설정한 색상을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using CommunityToolkit.Maui.Core.Extensions; Color sourceColor = Colors.White; Color targetColor = sourceColor.WithRed(255); |
■ ColorConversionExtensions 클래스의 ToRgbString 확장 메소드를 사용해 RGB 문자열을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using CommunityToolkit.Maui.Core.Extensions; Color sourceColor = Colors.Red; string rgb = sourceColor.ToRgbString(); |
■ ColorConversionExtensions 클래스의 ToHslString 확장 메소드를 사용해 HSL 문자열을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using CommunityToolkit.Maui.Core.Extensions; Color sourceColor = Colors.Red; string hsl = sourceColor.ToHslString(); |
■ ColorConversionExtensions 클래스의 ToRgbaString 확장 메소드를 사용해 RGBA 문자열을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using CommunityToolkit.Maui.Core.Extensions; Color sourceColor = Colors.Red; string rgba = sourceColor.ToRgbaString(); |
■ ColorConversionExtensions 클래스의 ToHslaString 확장 메소드를 사용해 HSLA 문자열을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using CommunityToolkit.Maui.Core.Extensions; Color sourceColor = Colors.Red; string hsla = sourceColor.ToHslaString(); |
■ ColorConversionExtensions 클래스의 ToCmykString 확장 메소드를 사용해 CMYK 문자열을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using CommunityToolkit.Maui.Core.Extensions; Color sourceColor = Colors.Red; string cmyk = sourceColor.ToCmykString(); |
■ ColorConversionExtensions 클래스의 ToCmykaString 확장 메소드를 사용해 CMYKA 문자열을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using CommunityToolkit.Maui.Core.Extensions; Color sourceColor = Colors.Red; string cmyka = sourceColor.ToCmykaString(); |
■ ColorConversionExtensions 클래스의 GetByteAlpha 확장 메소드를 사용해 알파 값을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using CommunityToolkit.Maui.Core.Extensions; Color sourceColor = Colors.Red; byte alpha = sourceColor.GetByteAlpha(); |
■ ColorConversionExtensions 클래스의 GetPercentYellow 확장 메소드를 사용해 노란색 값을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using CommunityToolkit.Maui.Core.Extensions; Color sourceColor = Colors.Red; double yellow = sourceColor.GetPercentYellow(); |
※ 노란색 값은 0 ~
더 읽기
■ ColorConversionExtensions 클래스의 GetPercentBlackKey 확장 메소드를 사용해 검정색 값을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using CommunityToolkit.Maui.Core.Extensions; Color sourceColor = Colors.Red; double black = sourceColor.GetPercentBlackKey(); |
※ 검정색 값은 0 ~
더 읽기
■ ColorConversionExtensions 클래스의 GetPercentCyan 확장 메소드를 사용해 청록색 값을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using CommunityToolkit.Maui.Core.Extensions; Color sourceColor = Colors.Red; double cyan = sourceColor.GetPercentCyan(); |
※ 청록색 값은 0 ~
더 읽기
■ ColorConversionExtensions 클래스의 GetDegreeHue 확장 메소드를 사용해 색조 값을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using CommunityToolkit.Maui.Core.Extensions; Color sourceColor = Colors.Red; double hue = sourceColor.GetDegreeHue(); |
※ 색조 값은 0 ~
더 읽기
■ ColorConversionExtensions 클래스의 GetByteRed 확장 메소드를 사용해 녹색 값을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using CommunityToolkit.Maui.Core.Extensions; Color sourceColor = Colors.Green; byte green = sourceColor.GetByteGreen(); |