2010-07-14 79 views
1

我需要關於開發WPF UI的幫助。我是WPF的新手。到目前爲止,我閱讀了很多教程,並決定遵循MVVM設計模式。如何在WPF中動態交換窗口內容

我想完成的事情看起來很簡單: 在窗口的開頭有一個組合框。它嵌入在兩行的網格中。現在我想要第二行的內容取決於ComboBox的選擇。第二行約佔頁面的四分之三。 Combobox不提供太多選擇。我最好不僅要交換一個標籤,而且還要交換該部分窗口的全部內容。

希望你們明白我的意思...

這說明可能有幫助:

______________ 
|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

非常感謝您的快速和有益的答案! 反正,出於好奇:如果我想從Code-Behind填充ComboBox,是否也有辦法做同樣的事情? – Toby 2010-07-14 13:38:42

+0

有幾種方法可以實現這一點。您可以將Tag屬性設置爲在XAML中配置的某個元素,或者使用代碼隱藏顯示適當的控件,或者編寫一個ValueConverter來設置基於ComboBox選擇的控件可見性,或者使用DataTrigger顯示相應的控件。 – 2010-07-14 14:16:06