我有一个使用ItemTemplate的ComboBox,如下所示。以某种方式,项目模板中定义的文本框的Text属性与绑定断开连接,并在所选项目更改时停止更新。
ComboBox.ItemsSource绑定到DependencyProperty,它是CatheterDefinition对象的列表。 ComboBox.SelectedItem绑定到DependencyProperty,它是一个CatheterDefinition对象。
<ComboBox
AutomationProperties.AutomationId="CatheterInfoModelFieldID"
VerticalAlignment="Center" HorizontalAlignment="Stretch"
ItemsSource="{x:Static PumpAndCatheter:CatheterInfoViewModel.CatheterModelDefinitions}"
SelectedItem="{Binding ElementName=UserControl, Path=ViewModel.SelectedCatheterModel, Mode=TwoWay, NotifyOnSourceUpdated=True}"
SourceUpdated="HandleModelSourceUpdated">
<ComboBox.ItemContainerStyle>
<!-- A style used to set the AutomationID based on the item goes here -->
</ComboBox.ItemContainerStyle>
<ComboBox.ItemTemplate>
<DataTemplate>
<!-- This line below is the location of the problem -->
<TextBlock Text="{Binding Converter={StaticResource CatheterModelDefinitionToStringConverter}}">
<!-- A style used to set the AutomationID based on the item goes here -->
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
我有一个自动化测试会产生一种非常奇怪的行为(我在代码的初始开发过程中看到了相同的行为,但是无法手动重现它) - 重现它的测试选择了一个项目形式ComboBox然后转到应用程序的另一部分,并采取一些最终在数据模型中保存此更改的操作。当测试返回到具有此ComboBox的屏幕时,它会尝试从ComboBox中选择另一个项目。 SelectedItem发生了变化,并且它被绑定的值发生了变化,但是ComboBox中的文本没有改变 - 不知何故,对文本框的Text属性的绑定被破坏(或者其他东西)......绑定仍然执行(
表示,当选择更改并转换为正确的值时,转换器仍然会运行,但是文本属性永远不会更新。思考? (我不能提供一个这样的例子,因为它是一个巨大的应用程序,它只能在我知道的一个测试中重现)
答案 0 :(得分:0)
由于未调用(或未正确调用)OnPropertyChanged(“PropName”)方法而导致破坏的绑定大部分时间。
如果没有看到您的底层实现,我会说这很可能是问题的根源。