首页 文章

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

提问于
浏览
0

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

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

2 回答

  • 0

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

    <!--- your xaml file --->
        <Control x:Name="Main"/>
    
    
    // you CS file....
        OnItemChanage(....)
        {
            if ( Main!= null ) 
            Main.Template = MyNewTemplate;
        }
    
  • 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代码

相关问题