IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

Tri d'une datagrid a l'intialization


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 84
    Par défaut Tri d'une datagrid a l'intialization
    Bonjour,

    Je suis sous DotNet 4 et j'utilise le pattern MVVM.

    Le binding se fait bien sur l'ensemble de mes données mais impossible de faire un tri sur la colonne Level a 'linitialization. Pourtant lorsque l'IHM est monté, il y a bien le petit triangle sur la colonne qui signale que celle ci est trié alors qu'elle ne l'est pas. Il faut systématiquement que je reclique sur la colonne pour la trié.

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <DataGrid ItemsSource="{Binding Alarms}" SelectedIndex="0" SelectedItem="{Binding RowsSelected,Mode=OneWayToSource}" AutoGenerateColumns="False" SelectionMode="Single">
    			<DataGrid.Columns>
    				<DataGridTextColumn Header="Type" Binding="{Binding ID}" IsReadOnly="True" Visibility="Collapsed"/>
    				<DataGridTextColumn Header="Name" Binding="{Binding Name}" IsReadOnly="True"/>
    				<DataGridTextColumn Header="Date" Binding="{Binding RaisingDate}" IsReadOnly="True"/>
    				<DataGridTextColumn Header="Level" Binding="{Binding Level}" IsReadOnly="True" SortDirection="Ascending"/>
    			</DataGrid.Columns>
    			<DataGrid.
    		</DataGrid>

    Merci d'avance

    Arnaud

  2. #2
    Membre éprouvé
    Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 99
    Par défaut
    Il me semble que le fait de setter SortDirection n'affecte que l'affichage et c'est normal. Pour le tri, tu peux utiliser une CollectionView ou ListCollectionView.

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <DataGrid ItemsSource="{Binding MyList}" SelectedIndex="0" SelectedItem="{Binding RowsSelected,Mode=OneWayToSource}" AutoGenerateColumns="False" SelectionMode="Single">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Property1" Binding="{Binding Property1}" IsReadOnly="True"/>
                    <DataGridTextColumn Header="Property2" Binding="{Binding Property2}" IsReadOnly="True" SortDirection="Ascending" />
                </DataGrid.Columns>
    </DataGrid>

    Le ViewModel :
    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
            public ObservableCollection<Item> MyList { get; set; }
            public ICollectionView MyView { get; set; }
    
            public MainViewModel()
            {
                MyList = new ObservableCollection<Item>();
                MyView = CollectionViewSource.GetDefaultView(MyList);
    
                MyList.Add(new Item { Property1 = "1", Property2 = "Max" });
                MyList.Add(new Item { Property1 = "2", Property2 = "Pax" });
                MyList.Add(new Item { Property1 = "3", Property2 = "Cax" });
                MyList.Add(new Item { Property1 = "4", Property2 = "Nax" });
                RaisePropertyChanged("MyList");
    
                MyView.SortDescriptions.Add(new SortDescription("Property2", ListSortDirection.Ascending));
                
            }

    Classe Item :
    Code : 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
    33
    34
    35
     
    public class Item : ViewModelBase
        {
            private string property1;
            public string Property1
            {
                get
                {
                    return property1;
                }
                set
                {
                    if (property1 == value)
                        return;
                    property1 = value;
                    RaisePropertyChanged("Property1");
                }
            }
     
            private string property2;
            public string Property2
            {
                get
                {
                    return property2;
                }
                set
                {
                    if (property2 == value)
                        return;
                    property2 = value;
                    RaisePropertyChanged("Property2");
                }
            }
        }

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 84
    Par défaut
    Tu as répondu exactement à mon problème.

    Précis, clair et je pense que ca servira a d'autres

    Je ne peux que m'incliner,

    +1 pour la réponse

    Arnaud

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Format Date et tri dans une datagrid
    Par Towandaa dans le forum Flex
    Réponses: 4
    Dernier message: 04/03/2015, 15h16
  2. Tri dans une datagrid paginée
    Par Asce. dans le forum Flex
    Réponses: 4
    Dernier message: 21/03/2010, 21h39
  3. DataGrid : Tri d'une colonne en CASEINSENSITIVE
    Par ToniConti dans le forum Flex
    Réponses: 10
    Dernier message: 10/02/2010, 10h21
  4. Réponses: 1
    Dernier message: 15/09/2008, 17h28
  5. Mauvais focus lors du tri d'une colonne sur un datagrid
    Par Scorpi0 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/10/2007, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo