У меня есть сетка, привязанная к списку объектов, SelectedIndex
привязана к свойству, я хочу это SelectedIndex
, которое работает корректно при изменении индекса при сортировке, однако коллекция в модели не сортируется, поэтому индекс не относится к модели.
Разметка в представлении:
<DataGrid Name="gridCustomers"
ItemsSource="{Binding Customers}"
SelectedIndex="{Binding SelectedIndex}"
CanUserSortColumns="True"
SelectionUnit="FullRow">
<DataGrid.Columns>
<DataGridTextColumn Header="Customer" Binding="{Binding ID}" />
<DataGridTextColumn Header="Name" Binding="{Binding Name}" />
</DataGrid.Columns>
</DataGrid>
Код в модели
public ObservableCollection<Customer> Customers {
get;
private set;
}
private int selectedIndex;
public int SelectedIndex {
get { return selectedIndex; }
set {
if (selectedIndex != value) {
selectedIndex = value;
OnNotifyPropertyChanged("SelectedIndex");
OnNotifyPropertyChanged("SelectedCustomer");
}
}
}
public Customer SelectedCustomer {
get { return CustomersView[selectedIndex]; }
}
Я использую этот подход, потому что яиметь кнопки «следующий / предыдущий» и ярлык с привязкой к «x of y customer».SelectedCustomer
- это вспомогательное свойство для дочернего элемента управления, которое в этом случае показывает неверный объект.