Événements
Créer des applications intelligentes
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantCe navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Cette rubrique explique comment utiliser la propriété UpdateSourceTrigger pour contrôler le moment des mises à jour de la source de liaison de données. La rubrique utilise le contrôle TextBox comme exemple.
La propriété TextBox.Text a la valeur UpdateSourceTrigger par défaut de LostFocus. Cela signifie qu’une application a un TextBox avec une propriété de TextBox.Text liée aux données, le texte que vous tapez dans l'TextBox ne met pas à jour la source tant que le TextBox n’a pas perdu le focus (par exemple, lorsque vous cliquez loin du TextBox).
Si vous souhaitez que la source soit mise à jour à mesure que vous tapez, définissez la UpdateSourceTrigger de la liaison sur PropertyChanged. Dans l’exemple suivant, les lignes de code en surbrillance montrent que les propriétés Text
des TextBox et des TextBlock sont liées à la même propriété source. La propriété UpdateSourceTrigger de la liaison TextBox est définie sur PropertyChanged.
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:src="clr-namespace:SDKSample"
xmlns:system="clr-namespace:System;assembly=mscorlib"
SizeToContent="WidthAndHeight"
Title="Simple Data Binding Sample">
<Window.Resources>
<ObjectDataProvider x:Key="myDataSource" ObjectType="{x:Type src:Person}">
<ObjectDataProvider.ConstructorParameters>
<system:String>Joe</system:String>
</ObjectDataProvider.ConstructorParameters>
</ObjectDataProvider>
<Style TargetType="{x:Type Label}">
<Setter Property="DockPanel.Dock" Value="Top"/>
<Setter Property="FontSize" Value="12"/>
</Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Width" Value="100"/>
<Setter Property="Height" Value="25"/>
<Setter Property="DockPanel.Dock" Value="Top"/>
</Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Width" Value="100"/>
<Setter Property="Height" Value="25"/>
<Setter Property="DockPanel.Dock" Value="Top"/>
</Style>
</Window.Resources>
<Border Margin="25" BorderBrush="Aqua" BorderThickness="3" Padding="8">
<DockPanel Width="200" Height="100">
<Label>Enter a Name:</Label>
<TextBox>
<TextBox.Text>
<Binding Source="{StaticResource myDataSource}" Path="Name"
UpdateSourceTrigger="PropertyChanged"/>
</TextBox.Text>
</TextBox>
<Label>The name you entered:</Label>
<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=Name}"/>
</DockPanel>
</Border>
</Window>
Par conséquent, le TextBlock affiche le même texte (car la source change) que l’utilisateur entre du texte dans le TextBox, comme illustré par la capture d’écran suivante de l’exemple :
Si vous avez une boîte de dialogue ou un formulaire modifiable par l’utilisateur et que vous souhaitez différer les mises à jour sources jusqu’à ce que l’utilisateur ait terminé de modifier les champs et cliquez sur « OK », vous pouvez définir la valeur UpdateSourceTrigger de vos liaisons sur Explicit, comme dans l’exemple suivant :
<TextBox Name="itemNameTextBox"
Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />
Lorsque vous définissez la valeur UpdateSourceTrigger sur Explicit, la valeur source change uniquement lorsque l’application appelle la méthode UpdateSource. L’exemple suivant montre comment appeler UpdateSource pour itemNameTextBox
:
// itemNameTextBox is an instance of a TextBox
BindingExpression be = itemNameTextBox.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();
Me.itemNameTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
Me.bidPriceTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
Notes
Vous pouvez utiliser la même technique pour les propriétés d’autres contrôles, mais gardez à l’esprit que la plupart des autres propriétés ont une valeur par défaut UpdateSourceTrigger de PropertyChanged. Pour obtenir des informations supplémentaires, consultez la page de propriétés UpdateSourceTrigger.
Notes
La propriété UpdateSourceTrigger traite des mises à jour de données et n’est donc applicable que pour les liaisons TwoWay ou OneWayToSource. Pour que les liaisons TwoWay et OneWayToSource fonctionnent, l’objet source doit fournir des notifications de modification de propriété. Pour plus d’informations, consultez les exemples cités dans cette rubrique. Vous pouvez également consulter la page Implémenter la notification des modifications de propriétés.
Commentaires sur .NET Desktop feedback
.NET Desktop feedback est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Événements
Créer des applications intelligentes
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantEntrainement
Module
Créer une interface utilisateur qui se sert de la liaison de données dans .NET MAUI. - Training
Créer une interface utilisateur avec la liaison de données. Votre interface utilisateur est automatiquement mise à jour en fonction des données les plus récentes, tandis que les données sont mises à jour suite aux modifications apportées à l’interface utilisateur.
Documentation
Guide pratique pour spécifier la direction de la liaison - WPF .NET Framework
Découvrez comment utiliser la propriété Binding.Mode pour spécifier si la liaison met à jour uniquement la propriété cible, la propriété source ou les deux.
Comment : spécifier la source de liaison - WPF .NET Framework
Découvrez comment spécifier la source de liaison via cet exemple dans Windows Presentation Foundation (WPF).
Comment : effectuer une liaison à une méthode - WPF .NET Framework
Suivez cet exemple pour savoir comment établir une liaison à la méthode d’un objet dans windows Presentation Foundation (WPF).