多选WPF列表框通过单击进行多项选择

时间:2009-07-05 16:28:24

标签: wpf silverlight listbox listboxitem

我有一个绑定到数据表的数据绑定多选列表框。当我选择listboxitem时,我希望自动选择同一列表框中的其他listboxitems。我希望只需点击一下即可选择多个项目。我怎样才能做到这一点?我无法在SelectionChanged事件中执行此操作,因为它会导致再次调用同一事件并完全打破我的逻辑。

请帮忙。任何帮助将受到高度赞赏。

更新

我的列表框已绑定到具有IsSelected列的数据表。我在样式设置器中使用此列的值来选择listboxitem。假设我在datatable中有10行。如果用户选择了第二个listboxitem,我可以将数据库中的对应行的isselected选为1。

但是我怎样才能同时选择其他项目?我认为肯特说,我宁愿使用属性进行绑定。但是,如何使用属性将列表框绑定到数据表?

5 个答案:

答案 0 :(得分: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事件,并让拥有类管理选择的相互依赖性。

答案 1 :(得分:0)

是否有一个“SelectedItem”属性,该属性的setter中的逻辑将处理选择其他“喜欢”项目?

这也许就是我要去的方式,很难说出更多细节。

答案 2 :(得分:0)

我正在做类似的事情。

我有单个选择的组合框,我用数据库中的Selected Value属性加载,现在我正在处理多选列表框 - 我有一个选择列表,我需要绑定到数据库列表框的选定列表。

如果没有循环,我没有办法做到这一点。

我看到listbox读/写属性,用于获取或设置Items或SelectedItems的Items,SelectedItem / Index / Value或只读属性。

答案 3 :(得分:0)

也许这是作弊,但是,当您在SelectionChanged事件中添加项目时,您尝试在选择多个项目时将IsEnabled设置为false,然后将其设置为true afterwords,我认为应该保留控件解雇事件?

答案 4 :(得分:0)

我创建了一个你可能会觉得有用的MultiSelectCollectionView:

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