선생님 안녕하세요
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을 넣고싶고 그런데 어떻게 고쳐야 하면 좋을지 알려주시면 정말 감사드리겠습니다.
답변 1
1
안녕하세요, 인프런 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





