【发布时间】:2011-06-21 15:23:04
【问题描述】:
我有一个绑定到对象列表的网格,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 个客户”的标签。 SelectedCustomer 是子控件的便利属性,在这种情况下显示不正确的对象。
【问题讨论】:
标签: wpf binding wpfdatagrid