none
problem avec SelecteItem dans ListView avec Tabcontrol RRS feed

  • Question

  • Bonjour,

    j'ai une listView généré dynamiquement dans un TabItem,

    quand je navgue entre les tabItems d'un TabControl je perde l'item selectionné dans la liste,

    exemple:

     

    <TabControl>

                           <TabItem>
                                <StackPanel Orientation="Horizontal">
                                    <TextBox Text="{Binding Path=Name1}" Width="120" Margin="3,0,3,0"/>
                                    <TextBox  x:name="abc" Width="120" Margin="3,0,3,0"/>
                                </StackPanel>
                            </TabItem>


                            <TabItem>
                                <DockPanel>
                                    <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
                                        <ListView>
                                            <ListViewItem>
                                                <TextBox Text="{Binding Path=Name2}" Width="120"/>
                                            </ListViewItem>
                                            <ListViewItem>
                                                <TextBox Text="{Binding Path=Name3}" Width="120"/>
                                            </ListViewItem>
                                        </ListView>
                                    </ScrollViewer>
                                </DockPanel>
                            </TabItem>

                        </TabControl>

    and its modelView:

     

    public class MyModelView : MyModelViewBase
        {
            private string _name1 = "teste 1";

            public string Name1
            {
                get { return _name1; }
                set { _name1 = value; }
            }
            private string _name2 = "teste 2";

            public string Name2
            {
                get { return _name2; }
                set { _name2 = value; }
            }
            private string _name3 = "teste 3";

            public string Name3
            {
                get { return _name3; }
                set { _name3 = value; }
            }
        }

     

    Merci d'avance,

    mardi 24 mai 2011 15:47

Réponses

  • Bonjour,

    C'est normal car ton TabControl possède l'évènement SelectionChanged et la ListView aussi.

    Donc quand tu cliques sur un tabControl ton évènement SelectionChanged est propager par la ListView, ce qui a pour effet de déselectionner le dernier items de ta ListView.

    La solution que je propose est peut être pas parfaite mais cela fonctionne.

    void tabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
          //Si l'évènement est déclencher par la ListView
          if (e.OriginalSource is ListView)
          {
            //On arrête la propagation de l'évènement et on quitte l'évènement
            e.Handled = true;
            return;
          }
        }
    

     


    Cordialement, Pascal.

    Développeur Wpf/SilverLight/WinPhone7

    • Proposé comme réponse Pascal Saille dimanche 29 mai 2011 08:41
    • Marqué comme réponse Ishak23 lundi 30 mai 2011 12:57
    mardi 24 mai 2011 18:45