2009-11-18 26 views
0

我有一個情況如下,我將首次使用WPF,所以任何建議abt如何進行將是偉大的: 我有一個下拉,當我從中選擇任何項目 - 它應該在同一窗口中更改控件的結構。新的控件包含 - 兩個菜單項和一個文本框和一個列表框。選擇一個菜單項將顯示文本框,其他將顯示列表框。現在,對於初始組合框中的每個項目,我將爲每個菜單項目提供不同的信息。在運行時在WPF應用程序中添加和更改usercontrol

問題: 假設我在組合框中有10個項目 - 每個項目有2個菜單項 - 以顯示20個不同的東西。 - 我應該如何聲明這20個不同的東西 - 我應該如何加載每個特定的組合時

回答

0

如果你想一次顯示多組控件,所有的控件dd到你的窗口和使用數據綁定設置Visibility,並使用ComboBox更新控件綁定的屬性。

或者,如果您只想一次顯示一個控制,只需使用一個DataContext從ComboBox:

<Window.DataContext> 
    <x:Array x:Key="myItems"> 
    <local:Item MenuItem1="abc" MenuItem2="def" /> 
    <local:Item MenuItem1="ghi" MenuItem2="jkl" /> 
    ... 
    <local:Item MenuItem1="ghi" MenuItem2="jkl" /> 
    </x:Array> 
</Window.DataContext> 


<Grid> 
    ... 
    <ComboBox x:Name="selection" ItemsSource="{Binding}"> 
    ... 

    <StackPanel DataContext="{Binding /}" ...> 
    <MenuItem Header="{Binding MenuItem1}" OnClick="DisplayListBox" /> 
    <MenuItem Header="{Binding MenuItem2}" OnClick="DisplayTextBox" /> 
    <TextBox Visibility="Hidden" ... /> 
    <ListBox Visibility="Hidden" ... /> 
    </StackPanel> 

</Grid> 

與DisplayListBox和DisplayTextBox

0

你應該看看ControlTemplate中相應的代碼。您可以定義一組模板,然後將它們應用於控件,使其成爲您想要的任何內容。所以,當項目更改事件觸發您的下拉列表時,加載並應用您想要的模板。

<!--- your xaml file ---> 
    <Control x:Name="Main"/> 


// you CS file.... 
    OnItemChanage(....) 
    { 
     if (Main!= null) 
     Main.Template = MyNewTemplate; 
    } 
相關問題