0

我有一个使用 ItemTemplate 的 ComboBox,如下所示。不知何故,项目模板中定义的文本框的 Text 属性与绑定断开连接,并在选定项目更改时停止更新。

ComboBox.ItemsSource 绑定到一个 DependencyProperty,它是 CatheterDefinition 对象的列表。ComboBox.SelectedItem 绑定到作为单个 CatheterDefinition 对象的 DependencyProperty。

<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 属性的绑定被破坏(或某些东西)......绑定仍然执行( converter still runs when the selection changes and it converts to the correct value), but the text property is never updated.

想法?(我不能提供一个例子,因为它是一个巨大的应用程序,它只能在我知道的一个测试下重现)

4

1 回答 1

0

大多数情况下,绑定损坏是由于未调用(或未正确调用) OnPropertyChanged("PropName") 方法引起的。

在没有看到您的底层实现的情况下,我会说这很可能是问题的根源。

于 2010-07-14T16:14:32.970 回答