Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

13 février 2014 4 13 /02 /février /2014 19:15

Xaml  


-          local correspond au namespace du projet (xmlns:local="clr-namespace:WpfDemoBinding")

Ressource (peut être définie pour la page, un conteneur ,un control)

  <Window.Resources>
        <local:Clients x:Key="clients"/>
    </Window.Resources>


Control

   <ListBox x:Name="lstClients" ItemsSource="{Binding Source={StaticResource clients}}"  >
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">                       
                        <TextBlock Text="{Binding Name}" />
                        <TextBlock Text="{Binding Email}"  />
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

 

C#
On créé une classe collection qui se charge depuis son constructeur
On pourrait tout aussi bien la charger depuis une base de données ou un fichier Xml
Pour bien faire il faudrait que la classe Client implémente INotifyPropertyChanged
public class Client
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Email { get; set; }
        public DateTime Birth { get; set; }
    }
    public class Clients : ObservableCollection<Client>
    {
        public Clients()
        {
            Add(new Client() { Name = "Bellin Marie", Email = "bellinmarie@live.com", Birth = new DateTime(1992,02,27) });
            Add(new Client() { Name = "Dupond Paul", Email = "dupondp123@yahoo.fr", Birth = new DateTime(1987, 01, 10) });
        }
    }

Cette manière de procéder permet de n’avoir aucun code behind dans la page.

Converter
Implémente IValueConverter
Value : valeur à convertir
[ValueConversion(typeof(DateTime), typeof(String))]
    public class DateConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return ((DateTime)value).ToShortDateString();
        }
 
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            DateTime result;
            if (DateTime.TryParse(value.ToString(), out result))
                return result;
            return DependencyProperty.UnsetValue;
        }
    }

Xaml
On rajoute une ressource
<Window.Resources>
...
        <local:DateConverter x:Key="dateConverter"/>
    </Window.Resources>

On rajoute un textBlock à la listBox
<TextBlock Text="{Binding Path=Birth, Converter={StaticResource dateConverter}}"/>

 

Partager cet article

Repost 0
Published by Romagny13 - dans Xaml
commenter cet article

commentaires