Le Binding avec WPF
Le binding est possible avec WPF grâce à l'objet Binding, contenu dans le namespace "System.Windows.Data.Binding".
On peut l'utiliser pour mettre en adéquation deux propriétés.
Prenons deux TextBox :
1 |
<TextBox x:Name=”txtName” Text=""/> <TextBox x:Name=”txtBlog” Text=""/> |
Nous souhaitons associer la propriété Text du contrôle txtName à celle de txtBlog,
on pourra utiliser cette méthode dans le fichier cs :
1 2 3 4 5 6 7 |
Binding binding = new Binding(); // Déclarer la source du binding binding.Source = txtName; // Déclarer la propriété utilisée binding.Path = new PropertyPath("Text"); // Attacher au contrôle txtBlog.SetBinding(TextBox.TextProperty, binding); |
ou plus largement dans le xaml..
1 2 3 4 |
<TextBox x:Name=”txtName” Text=""/> <TextBox x:Name=”txtBlog” Text="{Binding Text, ElementName=txtName}"/> |
Les deux méthodes permettent à chaque modification du contenu du contrôle txtName,
la modification de la propriété Text du txtBlog.
Pour effacer un binding existant, rien de plus simple;
1 |
BindingOperations.ClearBinding(txtBlog, TextBlock.TextProperty); |
On peut ensuite, comme l'a evoqué Thomas LEBRUN dans son article, utiliser le binding avec un DataTemplate pour une ListBox par exemple;
1 2 3 4 5 6 7 8 |
<ListBox x:Name="itemList" ItemsSource="{Binding Source={StaticResource listItems}}"> <ListBox.ItemTemplate> <DataTemplate> <TextBox Text="{Binding Path=text}"/> </DataTemplate> </ListBox.ItemTemplate> </ListBox> |
A présent, nous souhaitons contrôler l'évenement déclencheur du binding. Pour cela, il est souhaitable d'attribuer à la propriété "UpdateSourceTrigger" de l'objet Binding, la valeur UpdateSourceTrigger.Explicit. Dés lors, lorsque nous souhaitons rafraichir la propriété Text, nous pourrons ordonner sa mise à jour grâce à l'appel :
1 |
txtBlog.GetBindingExpression(TextBox.TextProperty).UpdateSource(); |
Avec WPF tout est possible... ou presque 
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :