我在wpf中有两个datagrids:grid1用于所有可用计划,grid2用于选择计划。两个网格由两个按钮(>)和(<)分隔。按钮(>)用于将所选计划添加到关联计划的grid2中,并将其从grid1中删除。按钮(<)将删除grid2的所选项目并将其添加到grid1(从选定的计划中删除)。
<DataGrid Name="grdAllPlans" SelectionMode="Single" ItemsSource="{Binding}">
<Button Click="linkClicked">
<Button Click="UnlinkClicked">
<DataGrid Name="grdSelectedPlans" SelectionMode="Single" ItemsSource="{Binding}">
我有两个有计划的全局变量:
static List<PlanDTO> PlansAssociated = new List<PlanDTO>(); //contain plans selected
static List<PlanDTO> PlansAvailable = new List<PlanDTO>(); //contain all plans not selected
这是关联计划的方法调用(从grid1中删除并将其添加到grid2):
private void linkClicked(object sender, RoutedEventArgs e)
{
if (grdAllPlans.SelectedItem != null)
{
PlanDTO selectedPlan = (PlanDTO)grdAllPlans.SelectedItem;
PlansAvailable.Remove(selectedPlan); //remove from collection PlansAvailable
PlansAssociated.Add(selectedPlan); //add it to selected collection
//Update grid1
srcCollectionViewAvailable.Source = PlansAvailable;
grdPlansDisponibles.ItemsSource = srcCollectionViewAvailable.View;
//Update grid2
srcCollectionViewAssociated.Source = PlansAssociated;
grdPlansAsociés.ItemsSource = srcCollectionViewAssociated.View;
grdPlansAsociés.UnselectAll();
grdPlansDisponibles.UnselectAll();
}
}
问题不起作用。我第一次将计划添加到选定的计划网格时,它做得很好,但之后两个网格都没有刷新。 SelectionMode =“Single”也不起作用。我能够选择多行。
答案 0 :(得分:1)
对于这两个全局变量,您需要使用ObservableCollection而不是List。
问题是列表更改时未通知UI。使用ObservableCollection会自动通知UI。