2010-07-14 78 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