0

私のプログラムにはcomboBoxと がありlistBoxます。はlistBoxさまざまなコマンドでいっぱいです。およびのselectedItem内容は、comboBox選択したコマンドによって異なります。のは、そのコマンドに対して選択されselectedItemたままになります。comboBoxたとえば、ユーザーが でコンテンツを選択していcomboBoxて、別のコマンドに切り替えてから元に戻した場合、 では同じ項目が選択されたままになりcomboBoxます。

comboBox選択したコマンドに応じて異なるアイテムが読み込まれるため、ObservableCollectionアイテムのセットごとに を作成する必要がありますか? ItemsSourceを1 つのものにのみバインドすることを許可されているので、それはどのように機能しますか?

それが正しいアプローチでない場合は、アドバイスしてください。これで十分に明確でない場合は、お知らせください。

ありがとう!

私のプログラムがどのように見えるかのサンプルは次のとおりです。

次に、コマンド 2 を選択すると、コンボ ボックスのリストは、たとえば a、b、c、d、e になります。

ここに画像の説明を入力

4

3 に答える 3

0

リストボックス コマンドごとに個別の ObservableCollection を持つことができます。

ユーザーが新しいリストボックス コマンドを選択したら、comboBox.ItemsSource を適切な ObservableCollection に設定します。それはあなたの問題を解決するはずです。

于 2013-10-03T21:53:13.060 に答える
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

説明に基づいて、 の内容は でcombobox選択した項目に関連付けられますlistbox。詳細を知らなくても、ビジネス オブジェクトは「サブコマンド」を含む「コマンド」オブジェクトのように見えますObservableCollectionか? オブジェクト。アプリケーションには、一連Observablecollectionの「コマンド」オブジェクトが含まれます。はlistbox、「コマンド」オブジェクト リストにバインドされたデータでありcombobox、選択されたアイテムの「サブコマンド」コレクションにバインドされます。

于 2013-10-03T22:16:54.687 に答える