4

我有一个绑定到数据表的数据绑定多选列表框。当我选择一个列表框项时,我希望自动选择同一列表框中的其他一些列表框项。我希望通过单击选择多个项目。我怎样才能做到这一点?我不能在SelectionChanged事件中这样做,因为它会导致再次调用相同的事件并完全破坏我的逻辑。

请帮忙。任何帮助将不胜感激。

更新:

我的列表框已经绑定到具有 IsSelected 列的数据表。我在样式设置器中使用此列的值来选择列表框项。假设我在数据表中有 10 行。现在如果用户选择第二个列表框项,我可以得到数据库中对应行的isselected为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

是否有一个“SelectedItem”属性以及该属性的设置器中的逻辑来处理选择您的其他“喜欢”项目?

这也许就是我要走的路,很难说没有更多细节。

于 2009-07-05T17:28:19.313 回答
0

我正在做类似的事情。

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

我看不到没有循环的方法。

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

于 2009-07-07T16:41:16.240 回答
0

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

于 2009-07-07T16:52:03.300 回答
0

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

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

于 2010-07-21T12:28:25.447 回答