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개의 μ’‹μ•„μš”

Caliburn.Microλ₯Ό μ‚¬μš©ν•΄λ³΄μ§€λŠ” μ•Šμ•˜μ§€λ§Œ μ•„λž˜μ²˜λŸΌ ν•΄λ³΄μ‹œμ£ .

    <ContentControl cal:View.Model="{Binding Path=(data:ModalInfo.Content)}" />
3개의 μ’‹μ•„μš”

확인 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€~

cal:View.Model둜 직접 바인딩을 ν•˜λ‹ˆ 화면이 λœ¨λ„€μš”β€¦!
View λž‘ ViewModel 은 연결이 λ˜μ–΄μžˆλŠ” 것 같은데 μ—΄λ¦° λͺ¨λ‹¬μ˜ 기타 μ•‘μ…˜ 바인딩이 μ•ˆλ˜μžˆλŠ”λ“―ν•˜μ—¬ κ±°κΈ°μ„œ λΆ€ν„° λ‹€μ‹œ 찾아보렀 ν•©λ‹ˆλ‹€~ μ‹œκ°„ λ‚΄μ–΄ 확인해 μ£Όμ…”μ„œ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€~ :slight_smile:

3개의 μ’‹μ•„μš”