2010-07-14 3 views
1

WPF UI를 개발하는 데 도움이 필요합니다. WPF가 처음입니다. 지금까지 많은 자습서를 읽고 MVVM 디자인 패턴을 따르기로 결정했습니다.WPF에서 윈도우 내용을 동적으로 교환하는 방법

내가 원하는 것은 간단 해 보일 수도 있습니다. 창 처음에 ComboBox가 있습니다. 그것은 두 행과 함께 그리드에 포함되어 있습니다. 이제 두 번째 행의 내용을 ComboBox의 선택에 따라 달라 지도록합니다. 이 두 번째 행은 페이지의 약 3/4을 차지하는 것입니다. 콤보 박스는 너무 많은 선택권을 제공하지 않습니다. 가급적이면 예를 들어 레이블 만 바꾸지 않고 창의 해당 부분의 전체 내용을 교환하고 싶습니다.

______________ 
|Source: File | 
|--------------| 
|  _______ | 
|File:|C:\... || 
|  |_______|| 
|    | 
|______________| 


__________________ 
|Source: Database | 
|------------------| 
|  _________ | 
|Host:|localhost| | 
|  |_________| | 
|  _________ |    
|Port:|1521| | | 
|  |_________| | 
|__________________| 

아마 각 서브 페이지 그리드를 정의하는 것이 가능을하고는 콤보 상자의 선택에 따라 동적으로 교환 :

는 희망 너희들은

이 그림은 도움이 될 수 있습니다 ... 생각을? 사전에 시간과 노력에 대한

덕분에 토비

답변

3

내 마음에 오는 첫번째 것은 :

당신이 XAML에서 콤보 상자를 채울 경우, 콤보 상자 항목의 태그에 해당하는 컨트롤을 넣어. 그런 다음 두 번째 행의 내용을 SelectedItem.Tag에 바인딩하십시오.

<ContentControl Grid.Row="1" Content="{Binding ElementName=comboBox1, Path=SelectedItem.Tag}" /> 
+0

귀하의 빠르고 유용한 답변에 감사드립니다. 어쨌든 호기심에서 : 코드 숨김에서 ComboBox를 채우고 싶다면 같은 방법을 사용하는 방법이 있습니까? – Toby

+0

이것을 달성하는 데는 여러 가지 방법이 있습니다. 태그 속성을 XAML에 구성된 일부 요소로 설정하거나 코드 숨김을 사용하여 적절한 컨트롤을 표시하거나 ComboBox 선택을 기준으로 컨트롤 표시 여부를 설정하는 ValueConverter를 작성하거나 DataTrigger를 사용하여 해당 컨트롤을 표시 할 수 있습니다. –

관련 문제