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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| //membre de ma class
private RelayCommand m_CommandSearch;
private string _SearchValue = null;
private ReadOnlyCollection<IPerson> _persons;
private List<IPerson> _personsSearch;
//methode déclencher par un click du bouton
public ICommand CommandSearch
{
get
{
if (m_CommandSearch == null)
{
m_CommandSearch = new RelayCommand(param => CanSearch(), param => Search());
}
return m_CommandSearch;
}
}
//propriété de ma classe. get et set des 2 list et de ma valeur de la TextBox
public ReadOnlyCollection<IPerson> persons
{
get { return _persons; }
set
{
_persons = value;
OnPropertyChanged("persons");
}
}
public List<IPerson> personsSearch
{
get { return _personsSearch; }
set
{
_personsSearch = value;
OnPropertyChanged("personsSearch");
}
}
public string SearchValue
{
get { return _SearchValue; }
set
{
_SearchValue = value;
OnPropertyChanged("SearchValue");
}
}
public ViewModelPersonList() //Mon constructeur
{
persons = GetPersons(); //varaible me renvoyant une liste ReadOnlyCollection<IPerson>
Search();
}
//ca on s'en moque un peu c'est une partie usine a gaz du mvvm :? (si vous voulez mettre en false essayer vous verrez :)
private static bool CanSearch()
{
return true;
}
private void Search() //methode me créant la second liste filtrer et bindé dans mon XAML
{
personsSearch = new List<IPerson>();
foreach (IPerson value in persons)
{
if (SearchValue == null || SearchValue == "")
{
personsSearch.Add(value); //renvoi tout si TextBox vide ou null (null c'est au demarage de la fenêtre)
}
else
{
if (value.FirstName.Contains(SearchValue) == true || value.LastName.Contains(SearchValue) == true)
personsSearch.Add(value); //test et intégration si le prénom ou nom possède la valeur a filtrer
}
}
} |