Inflearn brand logo image

인프런 커뮤니티 질문&답변

김주성님의 프로필 이미지
김주성

작성한 질문수

MAUI [Cross-Platform Applications & C#]

8)MVVM Pattern실습 + Builder Pattern +이벤트처리 방법

8)MVVM Pattern실습 + Builder Pattern +이벤트처리 방법 관련질문

작성

·

43

·

수정됨

0

프로젝트 따라가면서 이해안되는 부분이있어 질문 남깁니다!

mvvm 바인딩이 안되는것같아 질문드립니다.
( 다른파일 ex) listdetaileasyviewmodel은 잘됩니다)
firstpage 관련 강의를 따라가고 있던중 binding 이안됩니다...

올려주신 학습자료는 .net 8.0 으로 변경후 (.net 7.0은 지원중단되어 안되더라구요 ) 실행하면 firstpage에서 binding이되어 중단점이 찍히는것을 확인했으나

.net 9.0 환경에서 작성한 코드가 binding이
DataRefresh 에 안찍힙니다.

firstpage xaml에서 binding에 자동완성으로
DataRefreshCommand 가 뜨는 것은 확인했습니다.

혹시 실수를 하였나 다시 살펴봐도 오타가있거나 경로를 잘못하였나 살펴봐도 다른점이없는데 혹 .net 9.0에서 바뀐것이 있는지 다른 설정을 해줘야하는것이 있는지 궁금합니다.


혹시몰라 코드 첨부합니다.


[FirstViewModel.cs]
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace MAUI_MVVM_STUDY2.ViewModels

{

public partial class FirstViewModel : BaseViewModel

{

[ObservableProperty]

Person person;

//함수와 연결하고자 할때는 xaml 에서 ClearCommand를 바인딩해주면됨

//비동기 함수로 생성할 경우 aync키워드를 동일하게 사용해주면됨

[RelayCommand]

public async void DataRefresh()

{

Person abc = new Person();

abc = new Person();

abc.Age = 30;

abc.Name = "KIM";

this.Person = abc;

}

}

}

[FirstPage.xaml]

<?xml version="1.0" encoding="utf-8" ?>

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"

xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"

x:Class="MAUI_MVVM_STUDY2.Views.FirstPage"

xmlns:vm="clr-namespace:MAUI_MVVM_STUDY2.ViewModels"

xmlns:m="clr-namespace:MAUI_MVVM_STUDY2.Models"

x:DataType="vm:FirstViewModel"

xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"

Title="FirstPage">

<VerticalStackLayout>

<Label

Text="Welcome to .NET MAUI!"

VerticalOptions="Center"

HorizontalOptions="Center" />

<Label Text="{Binding Person.Age}"/>

<Button Text="hello" IsEnabled="True" >

<Button.Behaviors>

<toolkit:EventToCommandBehavior

EventName="Clicked"

Command="{Binding DataRefreshCommand}" />

</Button.Behaviors>

</Button>

</VerticalStackLayout>

</ContentPage>

[AppShell.xaml 일부 ]

<ShellContent

Shell.NavBarIsVisible="true"

Title="First"

Icon="icondrawing.png"

ContentTemplate="{DataTemplate views:FirstPage}"

Route="FirstPage" />

[mauiprogram.cs 일부]
builder.Services.AddSingleton<FirstPage>();

builder.Services.AddSingleton<FirstViewModel>();

이상입니다.
학습자료의 코드와 다른점을 아무리 찾아봐도 안보이는데 따로 해줘야할것이 있을까요?

답변 2

1

김주성님의 프로필 이미지
김주성
질문자

https://github.com/dotnet/maui/issues/30595?utm_source=chatgpt.com
.net 9.0에 현재 문제가있다는것을 찾았습니다

김주성님의 프로필 이미지
김주성
질문자

.net 8.0 환경으로 프로젝트를 새로 만들고 .net 9.0 환경에서 작성한 코드를 복사 붙여넣기 하였을때 정상작동을 확인하였습니다.

1

개발자Park님의 프로필 이미지
개발자Park
지식공유자

안녕하세요.개발자park입니다.

.NET9로 다시 새로 생성하였으나 정상적으로 동작합니다.

[예상되는 문제점1]

챕터3-8강의 16:02초 FirstPage.xaml.cs에 소스코드를 작성하셨는지
다시 확인해주세요.
[예상되는 문제점2]

챕터3-7강의 2:23초에서의 .NET버전을 9로 선택해줍니다.

그 후 프로젝트에서 마우스 우클릭-> Nuget패키지관리자를 클릭해주십니다.

image.png

 

아래 사진처럼 패키지버전이 9이상인지 확인해주세요.

(사진 크게보기: 사진 클릭 또는,마우스 우클릭-새탭에서 열기)

image.png

 

개발자Park님의 프로필 이미지
개발자Park
지식공유자

그래도 해결이 안되신다면

vmproductor@gmail.com또는

fallingsstar@naver.com으로 솔루션 파일을 압축해서 보내주시면 확인해보겠습니다.

감사합니다.

김주성님의 프로필 이미지
김주성
질문자

변경하였더니 잘됩니다! 감사합니다.

최신버전으로 설치되어있어서 문제였던것같은데

communitytoolkit.maui 최신버전인 12.1.0 을보면 버전은 맞는것같은데

왜안되었던건가요??

image.png

이것과 프로젝트의 targetframework를 보면

image.png


버전은 맞는것같은데 궁금합니다!

개발자Park님의 프로필 이미지
개발자Park
지식공유자

안녕하세요.개발자park입니다.

최근에 패키지 버전이 올라가면서 패키지의 사용방법이 약간 복잡해진 것으로 보입니다.

출처:https://www.wagenheimer.com/eventocommandbehaviors-dotnet9/

말씀하신 것 처럼 해당 패키지만 다운그레이드 해주시는 것을 현재까지는 추천드립니다.

저도 현재 최신 패키지사용방법은 모르겠습니다.

감사합니다.

김주성님의 프로필 이미지
김주성
질문자

감사합니다!

김주성님의 프로필 이미지
김주성

작성한 질문수

질문하기