Я знаю, что я уже сотый с той же проблемой, и я проверил много ответов на этом сайте, но ни один из них не решил мою проблему.
Я начал с поля со списком в сетке данных, и он работает как
<ComboBox ItemsSource="{Binding DataContext.ItemList,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType=DataGrid}}"
DisplayMemberPath="ItemName"
SelectedValuePath="ItemID"
SelectedValue="{Binding ItemID, UpdateSourceTrigger=PropertyChanged}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<cal:ActionMessage MethodName="AddRowCheck">
<cal:Parameter Value="{Binding ElementName=OrderList, Path=CurrentItem}"/>
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
Единственная проблема, с которой я столкнулся с этим, заключается в том, что когда я добавляю Items
к ItemList
, они появляются внизу списка, а не в алфавитном порядке.
Чтобы решить эту проблему, я обновил свой код следующим образом:
<Window.Resources>
<CollectionViewSource x:Key="sortedItemList"
Source="{Binding ItemList}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="ItemName" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</Window.Resources>
.......
<ComboBox ItemsSource="{Binding Source={StaticResource sortedItemList}}"
DisplayMemberPath="ItemName"
SelectedValuePath="ItemID"
SelectedValue="{Binding ItemID, UpdateSourceTrigger=PropertyChanged}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<cal:ActionMessage MethodName="AddRowCheck">
<cal:Parameter Value="{Binding ElementName=OrderList, Path=CurrentItem}"/>
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
, и теперь элементы расположены в алфавитном порядке, но выбранный элемент больше не отображается.
Что такое Я делаю что-то не так?
Я попытался переопределить свою функцию равенства в моем объекте Item, чтобы он проверил идентификатор, чтобы увидеть, равны ли два элемента, но это не решило проблему.