4

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

助けてください。どんな助けでも大歓迎です。

アップデート:

リストボックスはすでにIsSelected列を持つデータテーブルにバインドされています。スタイルセッターでこの列の値を使用してリストボックスアイテムを選択しています。データテーブルに10行あるとします。ユーザーが2番目のリストボックスアイテムを選択すると、データベース内の対応する行の選択された行を1として取得できます。

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

4

5 に答える 5

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イベントを発生させ、所有クラスに選択の相互依存性を管理させることもできます。

于 2009-07-05T17:37:35.107 に答える
0

これは不正行為かもしれませんが、SelectionChangedイベントにアイテムを追加するときに、複数のアイテムを選択したときにIsEnabledをfalseに設定してから、trueに戻すと、コントロールイベントが発生しないようになっていると思います。 ?

于 2009-07-07T16:52:03.300 に答える
0

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

データベースから Selected Value プロパティを使用してロードする単一選択コンボ ボックスがあり、現在、選択リストにバインドする必要があるデータベース内の選択リストがある複数選択リスト ボックスに取り組んでいます。私のリストボックスのために。

ループなしでそれを行う方法がわかりません。

項目、SelectedItem/Index/Value を取得または設定するためのリストボックスの読み取り/書き込みプロパティ、または項目または SelectedItems の読み取り専用プロパティが表示されます。

于 2009-07-07T16:41:16.240 に答える
0

他の「好きな」アイテムの選択を処理するそのプロパティのセッターにロジックを備えた「SelectedItem」プロパティがありますか?

それがおそらく私が行く道であり、詳細がなければ何とも言えません。

于 2009-07-05T17:28:19.313 に答える
0

ここで役に立つかもしれない MultiSelectCollectionView を作成しました。

http://grokys.blogspot.com/2010/07/mvvm-and-multiple-selection-part-iii.html

于 2010-07-21T12:28:25.447 に答える