2011-06-22 10 views
0

利用可能なすべてのプランに対してwpf:grid1に2つのデータグリッドがあり、プランのgrid2が選択されました。 2つのグリッドは2つのボタン(>)と(<)で区切られています。ボタン(>)は、選択したプランを関連するプランのグリッド2に追加し、グリッド1から削除することです。ボタン(<)は、grid2の選択項目を削除し、grid1に追加します(選択した計画から削除するため)。wpf datagrids bindingとSelectionMode Single

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(); 
      } 

    } 

<DataGrid Name="grdAllPlans" SelectionMode="Single" ItemsSource="{Binding}"> 
<Button Click="linkClicked"> 
<Button Click="UnlinkClicked"> 
<DataGrid Name="grdSelectedPlans" SelectionMode="Single" ItemsSource="{Binding}"> 

私は計画を持っている2つのグローバル変数を持っていました

問題は機能していません。初めて選択した計画グリッドに計画を追加すると、それはうまくいくが、その後は両方のグリッドが更新されない。 SelectionMode = "Single"は機能しません。私は複数の行を選択することができました。

答えて

1

これらの2つのグローバル変数には、ListではなくObservableCollectionを使用する必要があります。

問題は、リストが変更されたときにUIに通知されなかったことです。 ObservableCollectionを使用するとUIに自動的に通知されます。