2009-07-05 32 views
4

データテーブルにバインドされたデータバインドされた複数選択リストボックスがあります。リストボックス項目を選択すると、同じリストボックス内の他のいくつかのリストボックス項目を自動的に選択します。ワンクリックで複数のアイテムを選択したい。どうやってやるの?私はSelectionChangedイベントでそれを行うことはできません。なぜなら、同じイベントを再度呼び出すことにつながり、私のロジックを完全に破壊するからです。複数選択WPFリストボックス1回のクリックで複数の選択を行う

助けてください。どんな助力も高く評価されます。

UPDATE:

私のリストボックスがすでにIsSelected column.Iを持っているのDataTableにバインドされているが、私は10行を持ってlistboxitemのselected.Supposeを作るために、スタイルセッターにこの列の値を使用していますユーザーが2番目のリストボックス項目を選択すると、データベースの対応する行の選択された1を得ることができます。

しかし、他の項目を同時に選択するにはどうしたらいいですか?私はケントが言ったように、私はむしろバインディングのために財産を使うと思います。しかし、どのようにプロパティを使用してリストボックスをデータテーブルにバインドできますか?

答えて

0

あなたの他の「好き」アイテムの選択を扱うそのプロパティの設定者のロジックを持つ「SelectedItem」プロパティを持つでしょうか?

これはおそらく、私が行く方法です。詳細を述べるのは難しいです。

8

バインドIsSelectedをデータクラスのプロパティに追加します。プロパティを変更すると、他のデータオブジェクトにIsSelectedプロパティを更新するためのロジックを実行します。

<ListBox> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <Setter Property="IsSelected" Value="{Binding IsSelected}"/> 
     </Style> 
    </ListBox.ItemContainerStyle> 
</ListBox> 

その後、あなたのデータクラスに、あなたがこのような何か持つことができます。

public bool IsSelected 
{ 
    get { return _isSelected; } 
    set 
    { 
     if (_isSelected != value) 
     { 
      _isSelected = value; 
      OnPropertyChanged("IsSelected"); 

      UpdateOtherItems(); 
     } 
    } 
} 

それともあなたは持っている可能性をデータ項目はIsSelectedChangedイベントを発生させ、所有クラスが選択の相互依存性を管理するようにします。

0

私は同様のことに取り組んでいます。

データベースからSelected Valueプロパティをロードする単一選択コンボボックスがあります。これで、バインドする必要のあるデータベースの選択リストがある複数選択リストボックスを作成しています。リストボックスの選択リストに追加します。

私はループなしで行う方法はありません。

Items、SelectedItem/Index/Value、またはItemsまたはSelectedItemの読み取り専用プロパティを取得または設定するためのリストボックス読み取り/書き込みのプロパティを参照してください。

0

多分これは不正行為ですが、SelectionChangedイベントでアイテムを追加するときに、複数のアイテムを選択してからそれをtrueに戻すときにIsEnabledをfalseに設定しようとしましたが、発砲からの出来事を制御する?