我有以下问题:
有一个类有几个字符串属性
有一组这样的类实体
该集合显示在某些窗口左侧的树中,右侧显示详细信息。我将所选节点的字符串属性绑定到组合框中 第一个组合框始终具有相同的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" />
现在,当我在树中创建新节点时,两个字符串属性都具有空引用。当第一个组合为NEW节点更改其SelectedItem时,第二个ComboBox将null绑定到OLD节点的字符串值,这是在树中创建新节点之前选择的...我想知道在这种情况下我该怎么办?
答案 0 :(得分:1)
我刚刚找到了答案 绑定按其声明的顺序通知,WPF不会分析绑定的依赖关系:) 因此,交换ComboBoxes的声明解决了这个问题......在这种情况下可以接受,因为我将这些ComboBox放在Grid中手动设置它们的Grid.Row和Grid.Column ...... 虽然解决方案不是很令人满意,但它确实有效!