ビューに 2 つの ComboBox があります。どちらもObservableCollections
ViewModel で 2 つの異なるものにバインドされており、ComboBox1 で選択された項目が変更されると、ComboBox2 が別のコレクションで更新されます。バインディングは問題なく機能しますが、2 番目の ComboBox で常にコレクション内の最初の項目を選択するようにします。最初は機能しますが、ComboBox2 のソースと項目が更新されると、選択インデックスが -1 に変更されます (つまり、最初の項目が選択されなくなります)。
これを修正するために、SourceUpdated
ComboBox2 にイベントを追加し、イベントが呼び出すメソッドがインデックスを 0 に戻します。問題は、メソッドが呼び出されないことです (メソッドの一番上にブレークポイントを置いても、取得されません)。打つ)。これが私のXAMLコードです:
<Grid>
<StackPanel DataContext="{StaticResource mainModel}" Orientation="Vertical">
<ComboBox ItemsSource="{Binding Path=FieldList}" DisplayMemberPath="FieldName"
IsSynchronizedWithCurrentItem="True"/>
<ComboBox Name="cmbSelector" Margin="0,10,0,0"
ItemsSource="{Binding Path=CurrentSelectorList, NotifyOnSourceUpdated=True}"
SourceUpdated="cmbSelector_SourceUpdated">
</ComboBox>
</StackPanel>
</Grid>
コード ビハインドでは次のようになります。
// This never gets called
private void cmbSelector_SourceUpdated(object sender, DataTransferEventArgs e)
{
if (cmbSelector.HasItems)
{
cmbSelector.SelectedIndex = 0;
}
}
どんな助けでも大歓迎です。