Multiselect WPF Listbox只需单击一次即可进行多个选择

Multiselect WPF Listbox只需单击一次即可进行多个选择,wpf,silverlight,listbox,listboxitem,Wpf,Silverlight,Listbox,Listboxitem,我有一个绑定到数据表的数据绑定多选列表框。选择listboxitem时,我希望自动选择同一listbox中的其他listboxitems。我希望一次单击就可以选择多个项目。我该怎么做?我无法在SelectionChanged事件中执行此操作,因为它会导致再次调用同一事件并完全破坏我的逻辑 请帮忙。我们将非常感谢您的帮助 更新: 我的listbox已绑定到具有IsSelected列的datatable。我正在样式设置器中使用此列的值使listboxitem处于选中状态。假设我在datatable中

我有一个绑定到数据表的数据绑定多选列表框。选择listboxitem时,我希望自动选择同一listbox中的其他listboxitems。我希望一次单击就可以选择多个项目。我该怎么做?我无法在
SelectionChanged
事件中执行此操作,因为它会导致再次调用同一事件并完全破坏我的逻辑

请帮忙。我们将非常感谢您的帮助

更新:

我的listbox已绑定到具有IsSelected列的datatable。我正在样式设置器中使用此列的值使listboxitem处于选中状态。假设我在datatable中有10行。现在,如果用户选择第二个listboxitem,我可以将数据库中对应行的IsSelected设置为1

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

在setter中使用“SelectedItem”属性和该属性的逻辑来处理选择其他“相似”项的操作


如果没有更多细节,很难说我会这样做。

IsSelected
绑定到数据类中的属性。更改属性时,执行逻辑以更新其他数据对象中的
IsSelected
属性:

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

或者,您可以让数据项引发一个
IsSelectedChanged
事件,并让所属类管理所选内容的相互依赖关系。

我正在处理一个类似的问题

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

我看不出没有循环的方法


我看到用于获取或设置项目的列表框读/写属性、SelectedItem/Index/Value、或用于项目或SelectedItems的只读属性

这可能是作弊,但是,当您在SelectionChanged事件中添加项目时,您是否尝试在选择多个项目时将IsEnabled设置为false,然后将其设置为true afterwords,我认为这是为了防止控件事件触发?

我创建了一个MultiSelectCollectionView,您可能会发现它在这里很有用:

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

            UpdateOtherItems();
        }
    }
}