meiner vorherigen Frage Ähnliche: Binding ComboBox.SelectedItem in SilverlightBindung ComboBox.SelectedItem in Silverlight (mehr)
Ich habe eine ComboBox wie so gebunden:
regelmäßig<ComboBox x:Name="PART_CommentaryList"
HorizontalAlignment="Left"
Margin="3"
ItemsSource="{Binding Path=CurrentVideo.Commentaries}"
SelectedItem="{Binding Path=CurrentCommentary, Mode=TwoWay}">
Sowohl die CurrentVideo und CurrentCommentary Eigenschaftsänderung. Nach ein paar Mal bekomme ich diesen Fehler:
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)
Dies scheint wie ein ComboBox-Fehler für mich. Ich kann überprüfen, dass CurrentVideo vor CurrentCommentary geändert wird, daher sollte das ausgewählte Element immer ein Element sein, das sich in der Liste befindet.
Related, ich möchte wirklich nicht den Modus = TwoWay, denn wenn die ItemsSource geändert wird, ist das SelectedItem vorübergehend Null, die in meinem Modell zurückgesetzt wird, die ich eigentlich nicht möchte. Aber die Bindung funktioniert überhaupt nicht (das scheint ein anderer Fehler zu sein).
Überprüfen Sie, ob der CurrentCommentary immer noch in der CurrentVideo.Commentaries-Liste aufgeführt ist. Wenn dies nicht der Fall ist, wird dieser Fehler angezeigt. –
Ich habe einen Konverter in beide gebundenen Eigenschaften eingefügt, um zu prüfen, ob das ausgewählte Objekt tatsächlich in der Item-Quelle enthalten ist. Das Problem scheint zu sein: ItemsSource ändert sich. Diese Änderung bewirkt, dass SelectedItem null wird. SelectedCommentary wird auf null geändert, da es sich um eine bidirektionale Bindung handelt. SelectedCommentary wird von der App auf den richtigen Wert gesetzt, dieser Wert liegt definitiv innerhalb von ItemsSource. Fehler passiert. Wenn der Bindungsmodus nicht TwoWay ist, gibt es keinen Fehler, aber das richtige Element wird nie ausgewählt. –