Элемент управления в ItemTemplate ComboBox теряет свою привязку - PullRequest
0 голосов
/ 14 июля 2010

У меня есть ComboBox, который использует ItemTemplate, как показано ниже. Каким-то образом свойство 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 текстового поля нарушается (или что-то) ... Привязка все еще выполняется ( преобразователь по-прежнему работает, когда выбор изменяется, и он преобразуется в правильное значение), но свойство text никогда не обновляется.

Мысли? (Я не могу привести пример этого, потому что это огромное приложение, и оно воспроизводимо только в одном тесте, о котором я знаю)

1 Ответ

0 голосов
/ 14 июля 2010

Сломанные привязки в большинстве случаев вызваны тем, что не вызвал (или неправильно вызвал) метод OnPropertyChanged ("PropName").

Не видя вашей базовой реализации, я бы сказал, что это, скорее всегоисточник проблемы.

...