Bonjour à tous,

alors voici le contexte de mon problème:
* une application silverlight avec un service WCF
* une page contenant un datagrid
* ce datagrid affiche une liste de données provenant d'une Procédure Stockée appelé via le service.
* dans ce datagrid j'ai une combobox.
* cette combobox affiche un status en fonction d'un champ provenant des données.
* l'utilisateur à la possibilité de changer ce status.



ce qui fonctionne:
* le binding de la combobox: le champ à afficher est un texte, dans la base ce champ est un integer, j'utilise donc le binding sur le selectedindex
* l'événement selectionchanged fonctionne trop bien


Mon problème:
* l'événement selectionchanged fonctionne mais, lorsque la liste est grande (environ 200 lignes) si je fait un scroll, j'ai l'événement SelectionChanged qui se déclenche si j'ai une combobox qui n'est pas avec une valeur par default.




extrait de mon code:

Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<Data:DataGridTemplateColumn Header="" Width="0.20*" CanUserSort="True" SortMemberPath="PTC_ActionState">
       <Data:DataGridTemplateColumn.CellTemplate>
           <DataTemplate>
                  <ComboBox Name="ActionsState" Margin="2,0,0,2" Height="20" Style="{StaticResource ComboBoxStyleSD1}" SelectedIndex="{Binding Path=PTC_ActionState}" Tag="{Binding PTC_ID}"  MaxDropDownHeight="150" ItemContainerStyle="{StaticResource ComboBoxItemStyleSD1}" Background="#FF2C531F" Loaded="ActionsState_Loaded" SelectionChanged="ActionsState_SelectionChanged">
                <ComboBoxItem Style="{StaticResource ComboBoxItemStyleSD1}" Content="" Height="20"/>
                <ComboBoxItem Style="{StaticResource ComboBoxItemStyleSD1}" Content="{Binding ApplicationStrings.ADMIN_SITELIST_CbxItem_Observation, Source={StaticResource ResourceWrapper}}"/>
                <ComboBoxItem Style="{StaticResource ComboBoxItemStyleSD1}" Content="{Binding ApplicationStrings.ADMIN_SITELIST_CbxItem_ClientPre, Source={StaticResource ResourceWrapper}}"/>
                <ComboBoxItem Style="{StaticResource ComboBoxItemStyleSD1}" Content="{Binding ApplicationStrings.ADMIN_SITELIST_CbxItem_Intervention, Source={StaticResource ResourceWrapper}}"/>
                <ComboBoxItem Style="{StaticResource ComboBoxItemStyleSD1}" Content="{Binding ApplicationStrings.ADMIN_SITELIST_CbxItem_Traitement, Source={StaticResource ResourceWrapper}}"/>
                <ComboBoxItem Style="{StaticResource ComboBoxItemStyleSD1}" Content="{Binding ApplicationStrings.ADMIN_SITELIST_CbxItem_SiteTest, Source={StaticResource ResourceWrapper}}"/>
            </ComboBox>                                   
          </DataTemplate>
       </Data:DataGridTemplateColumn.CellTemplate>
 </Data:DataGridTemplateColumn>


Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
private bool _ActionStateInit = false;
 
private void ActionsState_Loaded(object sender, RoutedEventArgs e)
        {
            if (App.AccessLevel == "ADMIN" || App.AccessLevel == "SERVICECLIENT")
            {
                ((ComboBox)sender).IsEnabled = true;
            }
            else
            {
                ((ComboBox)sender).IsEnabled = false;
            }
            ((ComboBox)sender).SelectionChanged += new SelectionChangedEventHandler(ActionsState_SelectionChanged);
            _ActionStateInit = true;
        }
 
 
        private void ActionsState_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (_ActionStateInit)
            {
                ComboBoxItem _iCbxItem = new ComboBoxItem();
                _iCbxItem = ((ComboBoxItem)((ComboBox)sender).SelectedItem);
 
 
                // mise à jour de l'état de l'action en cours
 
               // mise à jour de la base via le service WCF en asynchrone
 
            }
        }



j'ai essayé de regarder ce sujet : http://www.developpez.net/forums/d90...lle-selection/
sans trop comprendre.

J'avoue ne pas utilisé le TwoWay dans mon binding car je ne pense pas que cela servent à grand chose avec le service WCF asynchrone



pour toutes questions ou précisions n'hésitez pas

dans l'attente de vos réponses, merci d'avance