以下に示すように、ItemTemplateを使用するComboBoxがあります。どういうわけか、アイテムテンプレートで定義されたテキストボックスのTextプロパティがバインディングから切断され、選択したアイテムが変更されると更新が停止します。
ComboBox.ItemsSourceは、CatheterDefinitionオブジェクトのリストであるDependencyPropertyにバインドされています。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プロパティへのバインドが壊れています(または何か)...バインドは引き続き実行されます(選択が変更されてもコンバーターは実行され、正しい値に変換されます)が、textプロパティが更新されることはありません。
考え?(これは巨大なアプリケーションであり、私が知っている1つのテストでしか再現できないため、この例を提供することはできません)