【发布时间】:2014-12-29 08:08:53
【问题描述】:
带有SelectionMode="Extended" 的简单列表框绑定到带有IsSelected 属性的视图模型:
<TextBlock Text="{Binding SelectedItems.Count, ElementName=list}" />
<ListBox x:Name="list"
SelectionMode="Extended"
ItemsSource="{Binding listItems}">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected"
Value="{Binding IsSelected}" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
当你选择零项然后做时
listItems.Move(0, 1);
ListBox SelectedItems.Count 从 1 增加到 2。通过这种方式增加该计数器后,当您在列表框中选择随机项时,它会减一。
为什么 SelectedItems 会累积移动的项目并且有修复?
视图模型:
class MainVM : VMBase
{
public MainVM()
{
listItems = new ObservableCollection<Item>() {
new Item(),
new Item(),
};
}
public ObservableCollection<Item> listItems { get; set; }
}
public class Item : VMBase
{
private bool _isSelected;
public bool IsSelected
{
get { return _isSelected; }
set
{
if (_isSelected != value)
{
_isSelected = value;
OnPropertyChanged("IsSelected");
}
}
}
}
【问题讨论】:
-
listItems是什么类型?Move是什么? -
你还没有显示
Move是什么。 -
是 ObservableCollection
.Move -
明白了。在这种情况下,您希望的行为是什么?您想在这里实现什么目标?
-
我想使用 gong dragdrop 移动 ListBox 中的项目。它在内部usesLsitBox.SelectedItems,在这里我遇到了这种奇怪的行为。期望的行为 - SelectedItems 包含实际选择的项目。