在WPF应用程序中运行时添加和更改usercontrol

时间:2009-11-18 22:23:15

标签: wpf user-controls controls

我的情况如下,我将首次使用WPF,所以任何关于如何进行的建议都应该是伟大的: 我有一个下拉菜单,当我从中选择任何项目时 - 它应该在同一个窗口中更改控件的结构。新控件包含 - 两个菜单项,一个文本框和一个列表框。选择一个菜单项将显示文本框,其他将显示列表框。现在,对于初始组合框中的每个项目,我将为每个菜单项提供不同的信息。

问题: 假设我在组合框中有10个项目 - 每个项目有2个菜单项 - 所以要显示20种不同的东西。   - 我该如何宣布这20种不同的东西   - 当选择特定组合时,我应该如何加载

2 个答案:

答案 0 :(得分:0)

如果要一次显示多组控件,请将所有控件添加到窗口并使用数据绑定设置Visibility,并使用ComboBox更新控件的属性必然会。

或者,如果您只想一次显示一个控件,只需使用ComboBox中的DataContext:

<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代码

答案 1 :(得分:0)

你应该看看ControlTemplate。您可以定义一组模板,然后将它们应用于控件,使它们成为您想要的任何模板。因此,当项目更改事件在您的下拉列表中触发时,请加载并应用您想要的模板。

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


// you CS file....
    OnItemChanage(....)
    {
        if ( Main!= null ) 
        Main.Template = MyNewTemplate;
    }
相关问题