2011-10-25 79 views
2

對不起,奇怪的標題。WPF - 將多個控件分組在一起並顯示其中一個'頁面'

假設我有一個帶有3個值A,B,C的組合框。

如果選擇'A',我想顯示一組特定的控件。如果選擇'B',我想顯示一組不同的控件,但是在票據中的同一位置。

基本上就像一個標籤控制,但我不希望看到的標籤 - 但我需要一定的「頁」,並根據綁定的值,顯示這些頁面。

我知道我可以創建單獨的userControls並根據組合框的值設置每個組合框的可見性,但是在我的wpf設計器中,我被卡住的同時看到所有可能的「頁面」。

這是可能的WPF?謝謝。

+0

綁定如何使用ValueConverter可見任何自然容器對組合框的特定值? – kenny

+0

這會起作用,但正如我上面所述,設計師不會是屏幕的準確表示。即可能有10個控件,其中只有1個在任何給定時間可見,其餘不會佔用任何空間。 – user981225

+0

讓他們都在設計模式下可見。爲Binding設置bool/Visible屬性。在設計模式中,讓它們都返回true。 – kenny

回答

2

最近我遇到了一個非常類似的情況。我的解決方案是使用Frame控件。 Frame控件將允許在其中加載各種Pages。每個頁面可能包含一組不同的控件,就像主窗口一樣。如果在框架上禁用了導航,它應該非常接近您要查找的內容。樣品的XAML:

<Frame Name="thisFrame" Width="250" Height="400" 
    NavigationUIVisibility="Hidden" /> 

在改變組合框的事件處理程序:

thisFrame.NavigationService.Navigate(new PageClassName()); 

這將使得畫面顯示所選頁面。或者,您可以在此處提供參數以在新頁面中爲UI控件設置默認狀態。如果以這種方式傳遞對象,則可以將UI控件綁定到對象以保存更改。

+0

非常感謝您的快速響應!我只是發現DevExpress 11也有一個隱藏實際標籤的選項。我肯定會嘗試你的解決方案,但再次感謝。 – user981225

+0

祝你好運!如果您的解決方案最終有效,我會鼓勵您將其作爲這個問題的答案發布。 – ford

+0

它確實有效!我將在週一發佈樣本。再次感謝你的幫助。 – user981225

0

這是我的示例解決方案。請注意,它使用DevExpress 11,它具有從選項卡控件中刪除選項卡標題的功能。 (UsePage1和UsePage2是我的viewmodel中的布爾值,在給定的時間只有一個是真的)。

<DXTabControl SelectedIndex="0" Width="Auto" > 
<DXTabControl.View> 
    <TabControlMultiLineView HeaderLocation="None" /> 
</DXTabControl.View> 
<DXTabItem IsSelected="{Binding Path=UsePage1}" > 
</DXTabItem> 
<DXTabItem IsSelected="{Binding Path=UsePage2}" > 
</DXTabItem> 
</DXTabControl> 
相關問題