12

私のViewModelには、2つのプロパティがあります(どちらもプロパティ変更通知を実装しています):

CountryOfIssue
Nationality

私のビューには、EntityFrameworkコンテキストのローカルインスタンスを指すCollectionViewSourceがあります。

<CollectionViewSource x:Key="cvsCountries" Source="{Binding LocalContext.Countries}" CollectionViewType="{x:Type ListCollectionView}">
    <CollectionViewSource.SortDescriptions>
        <scm:SortDescription PropertyName="Name" />
    </CollectionViewSource.SortDescriptions>
</CollectionViewSource>

また、このページには、CountryOfIssueとNationalityの値を設定するために使用される2つのコンボボックスがあります。

<ComboBox IsEnabled="{Binding CanEditCountryOfIssue}" ItemsSource="{Binding Source={StaticResource cvsCountries}}" DisplayMemberPath="Name" SelectedValuePath="Id" SelectedItem="{Binding CountryOfIssue, Mode=TwoWay, UpdateSourceTrigger=LostFocus, ValidatesOnDataErrors=True}" />

<ComboBox IsEnabled="{Binding CanEditNationality}" ItemsSource="{Binding Source={StaticResource cvsCountries}}" DisplayMemberPath="Name" SelectedValuePath="Id" SelectedItem="{Binding Nationality, Mode=TwoWay, UpdateSourceTrigger=LostFocus, ValidatesOnDataErrors=True}" />

この設定では、コンボボックスの値の1つを変更するたびに、もう1つも変更されます...これは予期される動作ですか?

(別のCollectionViewSourceを使用して修正を実装しましたが、これが正常かどうかを知りたいだけです)

4

1 に答える 1

16

これは正常です。CollectionViewsがあり、が同期されているCurrentItem場合ItemsSourceは、以下を参照してください。CollectionViewIsSynchronizedWithCurrentItem

SelectedItemがItemCollection内の現在のアイテムと常に同期されている場合はtrueSelectedItemが現在のアイテムと同期されない場合はfalse 。セレクターがCollectionViewを使用する場合にのみ、 SelectedItemが現在のアイテムと同期される場合はnull。デフォルト値はnullです。

したがって、そのプロパティをに設定することで、手動でオフにすることができますfalse

(ちなみに、スラッシュを介してのにバインドすることもできます。たとえばCurrentItem、の現在の人のプロパティにバインドします。)CollectionViewPeople/NameNamePeople

于 2012-09-11T10:54:47.050 に答える