Podobne do mojego poprzedniego pytania: Binding ComboBox.SelectedItem in SilverlightOprawa ComboBox.SelectedItem w Silverlight (więcej)
Mam ComboBox związany tak:
<ComboBox x:Name="PART_CommentaryList"
HorizontalAlignment="Left"
Margin="3"
ItemsSource="{Binding Path=CurrentVideo.Commentaries}"
SelectedItem="{Binding Path=CurrentCommentary, Mode=TwoWay}">
Zarówno CurrentVideo i CurrentCommentary zmiana nieruchomość regularnie. Po kilku chwilach pojawia się ten błąd:
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)
Wydaje mi się, że to błąd ComboBox. Mogę zweryfikować, że CurrentVideo zmienia się przed bieżącąComentarzem, więc wybrany element powinien zawsze być elementem, który znajduje się na liście.
Powiązane, Naprawdę nie chcę trybu = TwoWay, ponieważ gdy ItemsSource jest zmieniony, SelectedItem jest chwilowo pusty, co zostaje cofnięte w moim modelu, czego tak naprawdę nie chcę. Ale powiązanie w ogóle nie działa (co wydaje się być kolejnym błędem).
Czy sprawdzasz, aby upewnić się, że CurrentCommentary nadal znajduje się na liście CurrentVideo.Commentaries, ponieważ w przeciwnym razie pojawi się ten błąd. –
Wprowadziłem konwerter do obu właściwości związanych, aby sprawdzić, czy wybrany element rzeczywiście znajduje się w źródle materiałów. Wydaje się, że problem: Zmiany ItemsSource. Ta zmiana powoduje, że SelectedItem ma wartość NULL. SelectedCommentary zmienia się na wartość null, ponieważ jest to wiązanie dwukierunkowe. SelectedCommentary jest ustawiona na właściwą wartość przez aplikację, ta wartość jest zdecydowanie w ItemsSource. Błąd się dzieje. Jeśli tryb bindowania nie jest TwoWay, nie ma błędu, ale wtedy właściwy element nigdy nie jest wybierany. –