2009-11-18 25 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; 
    } 
相关问题