在WPF(XAML)的组合框中的组合框和持久标签之间切换

时间:2018-03-14 03:28:55

标签: wpf xaml combobox wpf-controls dropdown

我是WPF的新手,无法实现以下方案: 三个下拉框并排。我尝试过使用Combo Box。我试图在图像的帮助下解释这些问题 示例:(参考图片)

  • 我想选择任何一个 - 姓名/学校/电子邮件。假设我选择 Name1 ,那么我不应该选择其他两个下拉菜单中的任何一个 - 学校/电子邮件。但是,在我的实现中,我仍然可以从其他下拉列表中选择值。
  • 如果我改变主意并转到学校下拉列表并离开名称下拉列表,则名称下拉列表应更改< strong> Name1 (在步骤1中选择)到名称(这是该按钮的标题),但是,在我的实现中,两个选项 - Name1 School1 持续存在。

我尝试在这两个帖子的帮助下实现这一点,我最接近的就是我在上面的示例中提到的:How to display default text "--Select Team --" in combo box on pageload in WPF?Name on combobox in WPF enter image description here

PS:姓名/学校/电子邮件不是水印。它们是按钮的标题,默认情况下,当您登陆该页面/窗口时。 任何帮助/资源都表示赞赏。

1 个答案:

答案 0 :(得分:0)

如果您要在代码隐藏中进行编码,可以使用组合框的选择更改事件来设置每个组合的文本:

div

在名称组合框的选择更改中执行以下操作:

<StackPanel Grid.Row="1" Orientation="Horizontal">
        <ComboBox x:Name="cmbName" ItemsSource="{Binding NameList, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Text="Name"
                  SelectionChanged="cmbName_SelectionChanged" MinWidth="80" Margin="10" IsEditable="True" IsReadOnly="True"/>
        <ComboBox x:Name="cmbSchool" ItemsSource="{Binding SchoolList, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Text="School"
                  SelectionChanged="cmbSchool_SelectionChanged" MinWidth="80" Margin="10" IsEditable="True" IsReadOnly="True"/>
        <ComboBox x:Name="cmbEmail" ItemsSource="{Binding EmailList, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Text="Email"
                  SelectionChanged="cmbEmail_SelectionChanged" MinWidth="80" Margin="10" IsEditable="True" IsReadOnly="True"/>
</StackPanel>

对每个其他组合框执行相同操作;只需分别更改组合框名称。

如果您正在使用MVVM,则绑定每个组合框的SelectedItem和Text属性,并编写一个公共方法,该方法将所选项目设置为null,并且还分别设置每个绑定SelectedItems的setter内的text属性。