ComboBox的ItemTemplate中的控件失去其绑定

时间:2010-07-14 15:51:35

标签: wpf binding combobox itemtemplate

我有一个使用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属性的绑定被破坏(或者其他东西)......绑定仍然执行(

表示,当选择更改并转换为正确的值时,转换器仍然会运行,但是文本属性永远不会更新。

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

1 个答案:

答案 0 :(得分:0)

由于未调用(或未正确调用)OnPropertyChanged(“PropName”)方法而导致破坏的绑定大部分时间。

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