我的情况如下,我将首次使用WPF,所以任何关于如何进行的建议都应该是伟大的: 我有一个下拉菜单,当我从中选择任何项目时 - 它应该在同一个窗口中更改控件的结构。新控件包含 - 两个菜单项,一个文本框和一个列表框。选择一个菜单项将显示文本框,其他将显示列表框。现在,对于初始组合框中的每个项目,我将为每个菜单项提供不同的信息。
问题: 假设我在组合框中有10个项目 - 每个项目有2个菜单项 - 所以要显示20种不同的东西。 - 我该如何宣布这20种不同的东西 - 当选择特定组合时,我应该如何加载
答案 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;
}