inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#/.NET 7.0]어서와, WPF는 처음이지?

선생님 안녕하세요

해결된 질문

268

Ground2023

작성한 질문수 1

1

WPF 강좌를 듣다가 View에다가 포함시킬 예비 View를 만들어서 넣으려고 하고 잇습니다.

 

예를 들면 Popup_Window 라는 xaml.cs 가 있고

 

따로 OpenDoor.xaml, CloseDoor.xaml 이 있습니다

 

이 것들은 단지 코드 비하인드에는 아무것도 없고 디자인만 구현했습니다.

 

이것을 이제 Popup_Window에다가 넣으려고 하는데요

 

지금 Popup_Window에 잘 넣었고 원하는대로 실행이 되기는 합니다.

 

하지만

UserControl doorPage;

((ViewModel.DoorOpen)doorPage).DataContext = new Model.Doorpage_Model { StatusText = $"Door {i + 1} Open" };

((ViewModel.DoorOpen_Page_ViewModel)doorPage).Foreground = new SolidColorBrush(Colors.Red);

 

이런 방식으로 넣어서 이건 그냥 C# 을 쓴건지 WPF를 쓴건지 모를 정도로 코딩을 해버렸습니다.

 

Binding을 하여서 간결하게 UserControl을 넣고싶고 그런데 어떻게 고쳐야 하면 좋을지 알려주시면 정말 감사드리겠습니다.

 

.net wpf

답변 1

1

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

WPF에서 UserControl을 View에 통합하고 데이터 바인딩을 사용하여 ViewModel과 연결하는 방법을 찾고 계신 것 같네요. WPF의 데이터 바인딩 기능을 활용하면 코드를 더 간결하고 관리하기 쉽게 만들 수 있습니다. UserControl의 DataContext를 ViewModel에 바인딩하고, XAML에서 Binding을 통해 필요한 속성을 연결하는 방식으로 구현할 수 있습니다.

예를 들어, Popup_Window 내에서 UserControl로 동적으로 View를 표시하고 싶을 때, UserControl의 DataContext를 해당 View의 ViewModel에 바인딩하여 명시적인 코드 대신 선언적 마크업을 사용할 수 있습니다.

XAML에서는 다음과 같이 UserControl의 DataContext를 바인딩할 ViewModel과 연결할 수 있습니다:

<UserControl x:Name="doorPage" DataContext="{Binding DoorPageViewModel}"/>

그리고 UserControl 내에서는 Binding을 이용해 ViewModel의 속성에 접근할 수 있습니다:

<TextBlock Text="{Binding StatusText}" Foreground="{Binding StatusColor}"/>

ViewModel에서는 StatusText와 StatusColor라는 속성을 정의하고 INotifyPropertyChanged 인터페이스를 구현하여 속성 변경 알림을 View에 전달하도록 합니다. 이렇게 하면 C# 코드에서 직접 UserControl의 속성을 설정하는 대신, 바인딩을 통해 ViewModel의 상태 변경이 View에 자동으로 반영되게 할 수 있습니다.

이와 같은 데이터 바인딩 접근 방식은 XAML과 C# 코드 사이의 결합도를 낮추고, 코드를 더 간결하게 유지하는데 도움을 줍니다. WPF에서 MVVM(Model-View-ViewModel) 패턴을 적극 활용하는 것이 좋습니다.

질문에 더 구체적인 코드 예시나 문제 상황이 있다면 추가적으로 알려주시면 좀 더 구체적인 도움을 드릴 수 있을 것 같습니다.

LoadingControl 관련 질문입니다.

0

47

2

WPF xaml 편집 시 투명 배경으로 보는 방법

0

72

1

자동 생성된 ViewModels.Pages에서 디버깅이 되지 않습니다.

0

48

1

WPF-UI프로젝트에서 dll 참조하는 방법

0

92

1

프로그래 시브만 계속 나오는데

0

60

1

동영상 화질이 720인데 좀더 높은 화질은 안되나요?

-1

48

0

6번 강의 Dependency Injection

0

47

1

자동생성 안됨

0

76

1

(절대로 AI 인턴 쓰지마세요 Chatgpt랑 똑같은 답변 나옵니다.)WPF 'Title' 부분을 어떻게 변경해야 할 지 잘 모르겠습니다.

0

100

1

WPF 'Title' 부분을 어떻게 변경해야 할 지 잘 모르겠습니다.

0

76

2

INavigationAware

0

54

1

postgresql 설치 문제

0

74

1

nuget 버전 관련

0

64

1

질문있습니다 선생님.

0

58

1

12. Data 입력 View Page Design(2)

0

69

2

restore 오류

0

79

2

DB

0

75

1

WPF-UI 설치가 안된다면, 해당 빌드로 설치해보세요.

2

188

1

XAML을 야물이라고 읽으시는데 공식은 재믈 아닌가요?

0

221

1

코드 구문 에러 떠서 문의드립니다.

0

153

2

11:56 Binding ViewModel할때

0

153

1

WPF-UI 질문입니더

0

157

1

제너레이터 질문 있습니다

0

102

1

EntityFrameworkCore에서 Build Fail

0

132

1