ContentControl 에 ViewModel 바인딩 [Caliburn.Micro]

안녕하세요,
C# wpf를 시작한지 얼마 안되 매우 기초적인 질문일 수 있으나 찾기가 너무 어려워 질문드립니다 ㅠ

현재 MainView 에서 ContentControl 을 생성하여 화면내에 모달을 띄우려고 하고 있습니다.

모든 ViewModel 은 BasePageViewModel 을 상속받고 있습니다.
Caliburn.Micro 로 프로젝트가 생성되었습니다.

사용자가 버튼을 클릭시 아래 함수가 실행되고
ModalInfo 라는 정적클래스에 ViewModel 을 주입하고 있습니다,

public void AddUser()
{
    ModalInfo.IsActive = true;
    ModalInfo.Title = "사용자 추가";
    ModalInfo.Content = new ModalUserDetailViewModel();
}

아래는 MainView 의 영역으로 ContentControl 의 Content 로 AddUser 에서 주입한 Content 를 받아오고 있습니다.

<!-- 모달 팝업 영역 -->
<Border Background="#66000000" Visibility="{Binding Path=(data:ModalInfo.IsActive), Converter={StaticResource BoolToVisibilityConverter}}" >
    <ContentControl MinHeight="440" Content="{Binding Path=(data:ModalInfo.Content)}" />
</Border>

ModalUserDetailViewModel 과 ModalUserDetailView 는 같은 namespace 에 존재하여 viewModel 을 주입하면 caliburn.micro 에서 해당 viewmodel 에 맞는 view 를 매칭한다고 알고 있습니다.

하지만 화면에서는 객체명이 텍스트로만 표시됩니다.

ModalInfo.Content 의 타입을 UserControl 로 변경하여
ViewModel 대신 View 를 주입하는 경우에는
화면은 표기되지만 ViewModel과 DataContext 연동이 되지않아 바인딩이 이루어 지지 않고 있습니다.

관련하여 공부할 수 있는 자료나 조언을 부탁드립니다 ㅠㅠ
글 읽어주셔서 감사드립니다.

1 Like

Caliburn.Micro를 사용해보지는 않았지만 아래처럼 해보시죠.

    <ContentControl cal:View.Model="{Binding Path=(data:ModalInfo.Content)}" />
3 Likes

확인 감사드립니다~

cal:View.Model로 직접 바인딩을 하니 화면이 뜨네요…!
View 랑 ViewModel 은 연결이 되어있는 것 같은데 열린 모달의 기타 액션 바인딩이 안되있는듯하여 거기서 부터 다시 찾아보려 합니다~ 시간 내어 확인해 주셔서 감사드립니다~ :slight_smile:

3 Likes