2011-06-22 54 views
0

我有兩個數據網格在wpf:grid1所有可用的計劃和grid2的計劃被選中。兩個網格由兩個按鈕(>)和(<)分隔。按鈕(>)將選定的計劃添加到相關計劃的網格2中,並將其從網格1中刪除。按鈕(<)將刪除選定的grid2項並將其添加到grid1(以從選定的計劃中刪除)。wpf datagrids綁定和SelectionMode單一

<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

您需要使用ObservableCollection而不是這兩個全局變量的List。

問題是在列表更改時未通知UI。使用ObservableCollection會自動通知UI。