dimohy
1
์ฌ๋ฏธ๋ ์คํ์ ํ๊ณ ์๋ ํ๋ก์ ํธ๋ฅผ ์๊ฐ ํฉ๋๋ค.
MAUI ํ๋ฉด์ razor ๊ตฌ๋ฌธ ์คํ์ผ๋ก ๋ง๋ค์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ง์ ์คํํด๋ณด์ง๋ ์์์ง๋ง ๊ด๋ จ ๋ฌธ์๋ ์ ๊ณตํ๊ณ ๊ฐ์ธ์ ์ผ๋ก razor ๊ตฌ๋ฌธ ์คํ์ผ์ ๋ ์ข์ํด์ ๊ฐ ๋ณํ์ ๋ฐ๋ฅธ ํ๋ฉด ๋ ๋๋ง์ด XAML ์คํ์ผ์ ๋นํด ๋์์ง ์๋ค๋ฉด ์ดํด๋ณผ ํ์๊ฐ ์๋ ํ๋ก์ ํธ ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
4๊ฐ์ ์ข์์
dimohy
2
์ด ํ๋ก์ ํธ๋ Microsoft์ ์๋์ ์คํ์ฉ ๋ชจ๋ฐ์ผ Blazor ๋ฐ์ธ๋ฉ์ ํฌํฌ์
๋๋ค.
1๊ฐ์ ์ข์์
dimohy
3
๋ฌธ์๋ฅผ ์ด์ฉํด ํ๋ก์ ํธ ํ
ํ๋ฆฟ์ ์ค์นํ ํ ๊ธฐ๋ณธ ํ๋ก์ ํธ๋ฅผ ์์ฑํด์ ์คํํด๋ณด์์ต๋๋ค.
razor๋ก ํ์ด์ง๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ ํ์ธํ ์ ์๊ณ
๋ค์์ฒ๋ผ ์ ์คํ์ด ๋ฉ๋๋ค.
razor์ ์ฅ์ ์ xaml๋ฅผ ์ฌ์ฉํ์ ๋ ๋ถํ์ํ๊ฒ ํ๋ฉด ๊ด๋ จ ์ฝ๋๋ฅผ ์ง์ํ๊ฒ ๋๋ ๋ฐฉํฅ์ฑ์์
razor๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฐ์ค๋ฝ๊ฒ ํ๋ฉด ๊ตฌ์ฑ๊ณผ ํ๋ฉด ๊ด๋ จ ์ฝ๋๋ฅผ ๊ฒฐํฉํ ์ ์๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐ์ธ๋ฉ์ ๋์์ด ์ข ๋ ์ง๊ด์ ์ด์ฃ .
StateHasChanged()
๋ฅผ ๊ทธ๋๋ก ์ธ ์ ์๋ ๊ฒ์ผ๋ก ๋ณด์ ๋ ๋๋ง ํธ๋ฆฌ๋ Blazor์ ๊ทธ๊ฒ๊ณผ ๊ฐ์ด ๋์ผํ๊ฒ ๊ตฌ์ฑํ์ฌ ๋์ํ ๊ฒ ๊ฐ์ต๋๋ค.
2๊ฐ์ ์ข์์
dimohy
4
๋ช๊ฐ์ง ๋์์ ํ์ธํ๋๋ฐ ๊ธฐ๋ณธ ํ
ํ๋ฆฟ ๊ธฐ๋ฐ์ผ๋ก๋ ์ ๋์์ ํ๋ค์.
@page "/main"
<ContentPage>
<ScrollView>
<VerticalStackLayout Spacing="25"
Padding="new(30,0)"
VerticalOptions="LayoutOptions.Center">
@if (count % 2 is 0)
{
<Image Source="dotNetBotSource"
HeightRequest="200"
HorizontalOptions="LayoutOptions.Center" Opacity="opacity" />
}
<Label Text="Hello, World!"
FontSize="32"
HorizontalOptions="LayoutOptions.Center" />
<Label Text="Welcome to .NET Multi-platform App UI"
FontSize="18"
HorizontalOptions="LayoutOptions.Center" />
<Button Text="@ButtonText"
HorizontalOptions="LayoutOptions.Center"
OnClick="OnCounterClicked" />
<Label HorizontalOptions="LayoutOptions.Center">== "@ButtonText" == </Label>
<Entry HorizontalOptions="LayoutOptions.Center" @bind-Text="inputText" />
<Label HorizontalOptions="LayoutOptions.Center">== "@inputText" == </Label>
</VerticalStackLayout>
</ScrollView>
</ContentPage>
@code {
ImageSource dotNetBotSource = ImageSource.FromFile("dotnet_bot.png");
int count = 0;
double opacity = 1.0d;
string inputText = "default text";
string ButtonText => count switch
{
0 => "Click me",
1 => $"Clicked 1 time",
_ => $"Clicked {count} times"
};
void OnCounterClicked()
{
count++;
opacity -= 0.1;
}
}
2๊ฐ์ ์ข์์
์ ๋ ์กฐ๊ธ ์ดํด ๋ดค๋๋ฐ html์ ์ต์ํ์ง ์์ผ์ ๋ถ๋ค์
blazor hybrid ๋ณด๋ค mobile blazor binding์ด ๋์ ๊ฒ ๊ฐ์ต๋๋ค.~~
3๊ฐ์ ์ข์์
dimohy
6
๋ค๋ฅธ๊ฑด ํฐ ํ๋ค์ด ์๋๋ฐ Attached Property(์ฐ๊ฒฐ๋ ์์ฑ)
๊ฐ ๋ฌธ์ ์
๋๋ค. Blazor์ Razor์๋ Attached Property๊ฐ ์๊ฑฐ๋ ์. ๊ทธ๋์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ Attached Property๋ฅผ Blazor์ ๋งค๊ฐ๋ณ์๋ฅผ ํ์ํ๋ ์ปดํฌ๋ํธ (Grid์ Grid ์์ ๋ฑ)์์ ์ฒ๋ฆฌํฉ๋๋ค. (์ฆ, ์ฌ์ฉ์ ํ์ฅ์ ์๋ฉ๋๋คโฆ ๊ทธ๋ ์ฃ ?)
์กฐ๊ธ ๋ ์ดํด๋ดค๋๋ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Blazor ๋ ๋๋ง ์์คํ
์ ๊ทธ๋ฅ ์ฌ์ฉํฉ๋๋ค. ๋ค๋ง, ๋ ๋๋ง์ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ๋ฅผ MAUI๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด์ฃ . ๊ทธ๋ฌ๋๊น ๋ณํ๋ฅผ ๊ฐ์งํด์ ๋ ๋ ํธ๋ฆฌ๋ฅผ ๊ฐฑ์ ํ๋ ๊ธฐ์กด Blazor ๋ ๋๋ง ์์คํ
์ ๊ทธ๋๋ก ์ฌ์ฉ์ด ๋ฉ๋๋ค. ๋งค๋ ฅ์ ์ด๊ตฐ์ +_+ ๋๊ฐ์ ๊ฐ๋
์ผ๋ก MAUI ๋ฟ๋ง ์๋๋ผ Avalonia๋ Uno๋ Razor ๊ตฌ๋ฌธ ์คํ์ผ๋ก ํ์ฅํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. (๋ค๋ง, ์ด๋ฐ ์คํ ํ๋ก์ ํธ๊ฐ ์ฑ๊ณตํ๋ ค๋ฉด razor ์คํ์ผ ์๋น์๊ฐ ๋ง์์ผ ํ๋ค๋ ๊ฒ์ด ๋ฌธ์ ๊ตฐ์)
3๊ฐ์ ์ข์์