2009-03-03 9 views
1

Ich habe folgendes Problem:
gibt es eine Klasse mit ein paar String-Eigenschaften
eine Sammlung solcher Klasse Einheiten istWPF 2 ComboBox Bindungsproblem

Diese Sammlung in Baum auf der linken Seite angezeigt wird Einige Fenster und Details sind auf der rechten Seite zu sehen. Ich verbinde String-Eigenschaften des ausgewählten Knotens mit Comboboxen im Detail.
Erste Combobox hat immer die gleiche Itemssource aber die zweite Itemssource hängt von SelectedItem der ersten Combo ...

<ComboBox 
    Grid.Column="1" 
    SelectedIndex="0" 
    x:Name="cbClass" 
    Style="{DynamicResource ComboBoxValidationError}" 
    SelectedValue="{Binding Path=Description.Node.ClassName, ElementName=userControl, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
    ItemsSource="{Binding Source={StaticResource classesProvider}}" 
    Width="Auto" 
    Height="Auto" 
    DisplayMemberPath="Description" 
    SelectedValuePath="FQN" /> 

<ComboBox 
    Grid.Column="1" 
    SelectedIndex="0" 
    Grid.Row="1" 
    x:Name="cbMethod" 
    SelectedValue="{Binding Path=Description.Node.MethodName, ElementName=userControl, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged,diag:PresentationTraceSources.TraceLevel=High}" 
    ItemsSource="{Binding Path=SelectedItem.Methods, ElementName=cbClass, Mode=Default,diag:PresentationTraceSources.TraceLevel=High}" 
    Style="{DynamicResource ComboBoxValidationError}" 
    Width="Auto" 
    Height="Auto" 
    SelectedValuePath="Name" 
    DisplayMemberPath="Description" /> 

Nun, wenn ich neuen Knoten im Baum zu erstellen, müssen beide String Eigenschaften NULL-Verweis. Und wenn das erste Combo sein SelectedItem für den NEW-Knoten ändert, bindet das zweite ComboBox-Objekt NULL an den String-Wert des OLD-Knotens, der ausgewählt wurde, bevor ein neuer Knoten in der Baumstruktur erstellt wurde ... Ich frage mich, was ich in diesem Fall tun soll?

Antwort

1

Ich habe gerade eine Antwort gefunden.
Bindung wird in der Reihenfolge ihrer Erklärung mitgeteilt, WPF wird nicht Abhängigkeiten von Bindungen analysieren :) So Swapping Deklarationen von ComboBoxes löst das Problem ... Es ist in diesem Szenario akzeptabel, da ich diese ComboBoxen in Grid manuell setzen ihre Grid.Row und Grid.Column ... Obwohl Lösung nicht sehr erfreulich ist, funktioniert es!