2009-03-03 10 views
1

私は、次のような問題があります:文字列プロパティのカップル
を持つクラスがある
コレクションはの左側にツリーに表示されるように、クラスの実体WPF 2 ComboBoxの結合問題

のコレクションがありますいくつかの窓と詳細が右側に示されています。選択したノードの文字列プロパティをコンボボックスにバインドしています。
まずコンボボックスは常に同じのItemsSourceを持っていますが、私はツリーに新しいノードを作成するときに、第2の1つのItemsSourceは今...最初のコンボののSelectedItemに

<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" /> 

を依存し、両方の文字列プロパティは、null参照を持っています。最初のコンボがNEWノードのSelectedItemを変更すると、2番目のComboBoxは、ツリー内に新しいノードを作成する前に選択されたOLDノードの文字列値にnullをバインドします...この場合、どうすればよいですか?

答えて

1

私はちょうど答えを見つけました。
バインディングは宣言の順番で通知されますが、WPFはバインディングの依存関係を分析するつもりはありません:) ComboBoxesの宣言をスワッピングすると問題は解決します。これらのComboBoxをグリッドに配置するのは、 Grid.RowとGrid.Column ... 解決策はあまり気に入っていませんが、機能します!