gpt4 book ai didi

wpf - 具有相同 CollectionViewSource ItemSource 的两个组合框相互更新

转载 作者:行者123 更新时间:2023-12-04 03:39:13 28 4
gpt4 key购买 nike

在我的 ViewModel 上,我有 2 个属性(都实现了属性更改通知):

CountryOfIssue
Nationality

在我的 View 中,我有一个 CollectionViewSource 指向我的 Entity Framework 上下文的本地实例:
<CollectionViewSource x:Key="cvsCountries" Source="{Binding LocalContext.Countries}" CollectionViewType="{x:Type ListCollectionView}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="Name" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>

同样在此页面上,我有两个组合框用于设置 CountryOfIssue 和 Nationality 的值:
<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}" />

使用此设置,每当我更改组合框的值之一时,另一个也会更改...这是预期的行为吗?

(我已经通过使用另一个 CollectionViewSource 实现了修复,我只是想知道这是否正常)

最佳答案

这是正常的,CollectionViews有一个CurrentItem如果 ItemsSourceCollectionView他们得到同步,见 IsSynchronizedWithCurrentItem :

true if the SelectedItem is always synchronized with the current item in the ItemCollection; false if the SelectedItem is never synchronized with the current item; null if the SelectedItem is synchronized with the current item only if the Selector uses a CollectionView. The default value is null.



因此,您可以通过将该属性设置为 false 来手动关闭它。 .

(顺便说一句,您还可以通过斜杠绑定(bind)到 CurrentItemCollectionView。例如, People/Name 绑定(bind)到 Name 中当前人员的 People 属性。)

关于wpf - 具有相同 CollectionViewSource ItemSource 的两个组合框相互更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12367249/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com