0

在我的程序中,我有一个comboBox和一个listBox. listBox充满了不同的命令。和的selectedItem内容comboBox取决于选择了哪个命令。selectedItem为该comboBox命令选择的保持不变。例如,当用户在 中选择了内容comboBox并且他们切换到不同的命令,然后切换回来时,仍然会在 中选择相同的项目comboBox

因为comboBox根据选择的命令填充了不同的项目,我应该ObservableCollection为每组项目制作一个吗?我只被允许绑定ItemsSource到一件事,那么这将如何工作?

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

谢谢!

这是我的程序的示例:

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

在此处输入图像描述

4

3 回答 3

0

根据您的描述, 的内容comboboxlistbox. 在不了解更多细节的情况下,您的业务对象似乎是一个包含“子命令”的“命令”对象ObservableCollection?对象。然后,您的应用程序将包含一个Observablecollection“命令”对象。将listbox数据绑定到“命令”对象列表,并且combobox将绑定到选定项目“子命令”集合。

于 2013-10-03T22:16:54.687 回答
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"/>

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

于 2013-10-04T20:30:21.987 回答
0

您可以为每个列表框命令设置一个单独的 ObservableCollection。

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

于 2013-10-03T21:53:13.060 回答