更改组合框中的完整内容列表

时间:2013-10-03 20:53:10

标签: c# wpf combobox listbox

在我的计划中,我有comboBoxlistBoxlistBox充满了不同的命令。 selectedItem的{​​{1}}和内容取决于所选的命令。 comboBox中的selectedItem保持为该命令选择。例如,当用户在comboBox中选择了内容并且他们切换到其他命令,然后切换回来时,仍然会在comboBox中选择相同的项目。

因为comboBox根据选择的命令填充了不同的项目,我应该为每组项目设置comboBox吗?我只允许将ObservableCollection绑定到一个东西,那么它将如何工作?

如果这不是正确的方法,请告知。如果这还不够清楚,请告诉我。

谢谢!

以下是我的程序的样本:

然后,如果选择了命令2,则组合框中的列表可能是a,b,c,d,e,例如。

enter image description here

3 个答案:

答案 0 :(得分:0)

每个listbox命令都可以有一个单独的ObservableCollection。

当用户选择新的列表框命令时,将comboBox.ItemsSource设置为适当的ObservableCollection。这应该可以解决你的问题。

答案 1 :(得分:0)

根据您的说明,combobox的内容与listbox中的所选项目相关联。在不知道任何细节的情况下,您的业务对象似乎是一个包含ObservableCollection“SubCommand”的“Command”对象?对象。然后,您的应用程序将包含Observablecollection个“Command”对象。 listbox将是绑定到“Command”对象列表的数据,combobox将绑定到所选项“SubCommand”集合。

答案 2 :(得分:0)

在我看来,你正在寻找一个主/细节结构:

数据项:

public class MyCommandDefinition
{
    public string DisplayName {get;set;}

    public List<MyParameter> Parameters {get;set;}

    public Parameter SelectedParameter {get;set;}
}

public class MyParameter
{
    public string DisplayName {get;set;}

    //Additional properties depending on your needs.
}

视图模型:

public class MyViewModel
{
    public List<MyCommandDefinition> Commands {get;set;}

    public MyCommandDefinition SelectedCommand {get;set;}
}

XAML:

<ListBox ItemsSource="{Binding Commands"}"
         SelectedItem="{Binding SelectedCommand}"
         DisplayMemberPath="DisplayName"/>

<ComboBox ItemsSource="{Binding SelectedCommand.Parameters}"
          SelectedItem="{Binding SelectedCommand.SelectedParameter}"
          DisplayMemberPath="DisplayName"/>

如果您要以编程方式更改它们并希望将其反映在UI中,请不要忘记所有这些属性中的NotifyPropertyChanged()

相关问题