2009-03-03 2 views
1

У меня есть следующая проблема:
есть класс с парой строк свойств
есть набор таких сущностей классаWPF 2 ComboBox привязки проблема

Эта коллекция показана в дереве слева от некоторые окна и детали, показанные справа. Я подробно привязываю строковые свойства выбранного узла к выкладкам.
Первый выпадающий всегда имеют один и тот же ItemsSource но второй один 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" /> 

Теперь, когда я создать новый узел в дереве, как строковые свойства имеют нулевую ссылку. И когда первая комбо меняет свой SelectedItem для узла NEW, второй ComboBox связывает нуль с строковым значением OLD-узла, которые были выбраны до создания нового узла в дереве ... Интересно, что я должен делать в этом случае?

ответ

1

Я только что нашел ответ.
Связывание уведомляется в порядке их объявления, WPF не собирается анализировать зависимости привязок :) Так что обмен декламациями ComboBoxes решает проблему ... Это приемлемо в этом сценарии, потому что я помещаю эти ComboBoxes в Grid вручную, устанавливая их Grid.Row и Grid.Column ... Хотя решение не очень приятно, оно работает!

Смежные вопросы