wpf datagrids绑定和SelectionMode Single

时间:2011-06-22 15:52:13

标签: wpf binding grid

我在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”也不起作用。我能够选择多行。

1 个答案:

答案 0 :(得分:1)

对于这两个全局变量,您需要使用ObservableCollection而不是List。

问题是列表更改时未通知UI。使用ObservableCollection会自动通知UI。