Partage
  • Partager sur Facebook
  • Partager sur Twitter

Filtrage de données avec une CollectionViewSource

Sujet résolu
    3 janvier 2019 à 23:24:46

    Bonsoir et bonne année à tous.

    J'ai un petit souci avec l'utilisation d'un CollectionViewSource. Je cherche à filtrer des données d'un ObservableCollection pour les afficher dans un DataGrid. Je travaille avec WPF en MVVM.

    J'ai écrit le tout dans le XAML et le ViewModel de mon UserControl mais ça ne fonctionne pas. Je vous donne les lignes de programme:

    Le XAML:

    <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                 xmlns:local="clr-namespace:Compte_Bancaire.Views"
                 xmlns:ViewModel="clr-namespace:Compte_Bancaire.ViewModel"
                 x:Class="Compte_Bancaire.Views.UcDepense"
                 mc:Ignorable="d"
                 d:DesignHeight="800"
                 d:DesignWidth="800">
        
        <UserControl.DataContext>
            <ViewModel:UcDepenseViewModel />
        </UserControl.DataContext>
    
        <UserControl.Resources>
            <CollectionViewSource x:Key="Filtre"
                                  Source="{Binding ItemDepense}"
                                  Filter="CollectionViewSource_Filter"/>
        </UserControl.Resources>
    	
    	<Grid>
    		<DataGrid x:Name="DataGridDepense"
    					ItemsSource="{Binding Source={StaticResource Filtre}}"
    					SelectedItem="{Binding ItemSelectionne,Mode=TwoWay}"
    		</DataGrid>
         </Grid>

    Le ViewModel:

    public class UcDepenseViewModel: Notifiable
        {
    		private ObservableCollection<CollectionDepense> itemDepense;
            public ObservableCollection<CollectionDepense> ItemDepense
            {
                set
                {
    
                    itemDepense = value;
                    RaisePropertyChanged(nameof(UcDepenseViewModel.ItemDepense));
                }
                get
                {
                    return itemDepense;
                }
            }
    		
    		public void CollectionViewSource_Filter(Object sender, FilterEventArgs e)
            {
                string NomduMois = Mediator.MediatorUtile.NomMois;
                if((e.Item as CollectionDepense).Mois == NomduMois)
                {
                    e.Accepted = true;
                }
            }
    	}

    Quelqu'un peut-il m'aider? Par avance merci.


    • Partager sur Facebook
    • Partager sur Twitter
      9 janvier 2019 à 13:10:37

      merci j'ai réussi tout seul!!!
      • Partager sur Facebook
      • Partager sur Twitter

      Filtrage de données avec une CollectionViewSource

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown