Относится к моему предыдущему вопросу: Привязка ComboBox.SelectedItem в Silverlight
У меня есть ComboBox, связанный так:
<ComboBox x:Name="PART_CommentaryList"
HorizontalAlignment="Left"
Margin="3"
ItemsSource="{Binding Path=CurrentVideo.Commentaries}"
SelectedItem="{Binding Path=CurrentCommentary, Mode=TwoWay}">
Регулярно меняются как свойства CurrentVideo, так и свойства CurrentCommentary. Через несколько раз я получаю эту ошибку:
Category: ManagedRuntimeError
Message: System.ArgumentException: Value does not fall within the expected
range.
at MS.Internal.XcpImports.MethodEx(IntPtr ptr, String name,
CValue[] cvData)
at MS.Internal.XcpImports.MethodPack(IntPtr objectPtr, String methodName,
Object[] rawData)
at MS.Internal.XcpImports.UIElement_TransformToVisual(UIElement element,
UIElement visual)
at System.Windows.UIElement.TransformToVisual(UIElement visual)
at System.Windows.Controls.Primitives.Selector.IsOnCurrentPage(
Int32 index, Rect& itemsHostRect, Rect& listBoxItemRect)
at System.Windows.Controls.Primitives.Selector.ScrollIntoView(
Int32 index)
at System.Windows.Controls.Primitives.Selector.SetFocusedItem(
Int32 index, Boolean scrollIntoView)
at System.Windows.Controls.ComboBox.PrepareContainerForItemOverride(
DependencyObject element, Object item)
at System.Windows.Controls.ItemsControl.UpdateContainerForItem(
Int32 index)
at System.Windows.Controls.ItemsControl.RecreateVisualChildren()
at System.Windows.Controls.ItemsControl.RecreateVisualChildren(
IntPtr unmanagedObj)
Мне это кажется ошибкой ComboBox. Я могу убедиться, что CurrentVideo изменяется до CurrentCommentary, поэтому выбранный элемент всегда должен быть элементом, который находится в списке.
В связи с этим, я действительно не хочу Mode = TwoWay, потому что, когда изменяется ItemSource, SelectedItem временно становится нулевым, что возвращается в мою модель, чего я на самом деле не хочу. Но в противном случае привязка не работает вообще (что похоже на еще одну ошибку).