我有一些曾经工作的Silverlight XAML,但我似乎无法弄清楚我做了什么突然让它停止工作,甚至如何改变它。
这是一些XAML:
<ListBox ItemsSource="{Binding ItemsForSelectedPublisher}"
SelectedItem="{Binding SelectedItemForPublisher, Mode=TwoWay}"
DisplayMemberPath="ItemNameWithSelectionCount"
SelectionMode="Single"
HorizontalAlignment="Left"
FontSize="14"
Width="300"
Height="500"
/>
视图模型中的一些代码:
public ObservableCollection<ItemViewModel> ItemsForSelectedPublisher
{
get { return _itemsForSelectedPublisher; }
private set
{
if (_itemsForSelectedPublisher != value)
{
_itemsForSelectedPublisher = value;
RaisePropertyChanged(() => ItemsForSelectedPublisher);
}
}
}
public ItemViewModel SelectedItemForPublisher
{
get { return _selectedItemForPublisher; }
set
{
if (_selectedItemForPublisher != value)
{
_selectedItemForPublisher = value;
RaisePropertyChanged(() => SelectedItemForPublisher);
}
}
}
更改ListBox的SelectedItem(第一次设置)后,Silverlight Application.UnhandledException处理程序中捕获到以下异常。
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
at System.ThrowHelper.ThrowArgumentOutOfRangeException()
at System.Collections.Generic.List`1.get_Item(Int32 index)
at System.Windows.Automation.Peers.SelectorAutomationPeer.RaiseSelectionEvents(SelectionChangedEventArgs e)
at System.Windows.Controls.Primitives.Selector.InvokeSelectionChanged(List`1 unselectedItems, List`1 selectedItems)
at System.Windows.Controls.Primitives.Selector.SelectionChanger.End()
at System.Windows.Controls.Primitives.Selector.SelectionChanger.SelectJustThisItem(Int32 oldIndex, Int32 newIndex)
at System.Windows.Controls.ListBox.MakeSingleSelection(Int32 index)
at System.Windows.Controls.ListBox.HandleItemSelection(ListBoxItem item, Boolean isMouseSelection)
at System.Windows.Controls.ListBox.OnListBoxItemClicked(ListBoxItem item)
at System.Windows.Controls.ListBoxItem.OnMouseLeftButtonDown(MouseButtonEventArgs e)
at System.Windows.Controls.Control.OnMouseLeftButtonDown(Control ctrl, EventArgs e)
at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName, UInt32 flags)
据我所知,ListBox得到了一些不正确的索引,但不知道它是什么或者为什么会发生这种情况。任何人都知道如何发生这种情况?此时我不知道还能在哪里看。
答案 0 :(得分:0)
经过大量研究后,我发现根本原因是我自己的错(那里没有真正的惊喜)。显然我自己的代码中的错误是对我的一些视图模型的不正确的Equals()覆盖。这导致ListBox绑定变得混乱并抛出超出范围的异常。