9 votes

Mettre automatiquement à jour le paramètre d'application en utilisant la liaison à partir de VS.Net Designer.

Il est possible de lier une propriété à un paramètre d'application existant en utilisant le concepteur comme ça je n'ai pas à écrire quelque chose comme

textBox.Text = Settings.Default.Name;

lors de l'initialisation de mon formulaire.

Maintenant, il semble que la liaison s'arrête là, c'est-à-dire que si je change la valeur de mon paramètre, la valeur de ma zone de texte ne sera pas mise à jour et vice versa.

Est-ce normal ou est-ce que je rate quelque chose ?

19voto

Daniel Argüelles Points 1040

Je vais expliquer comment je le fais sur les formulaires Windows avec Visual Studio 2010. C'est probablement similaire dans les versions plus récentes.

  1. Cliquez sur le composant à lier (zone de texte, case à cocher, ...).

  2. Rendre visible le panneau des propriétés du composant

  3. Développez le nœud ApplicationSettings

  4. Cliquez sur le bouton ... à droite du bouton (PropertyBinding)

    Get application settings for component

  5. Choisissez le paramètre auquel vous voulez que le contrôle soit lié.

Un tutoriel plus détaillé est disponible à l'adresse suivante Explorer les secrets des paramètres persistants des applications

1voto

Eh bien, ça dépend.

Tout d'abord, je ne sais pas si vous parlez de WPF ou de Windows Forms, je vais donc supposer que ce n'est pas le cas.

Deuxièmement, vous ne "liez" rien. Vous prenez la valeur de Name et de définir la propriété Text égale à cette valeur. Vous définissez une propriété. Cela ne s'accompagne pas d'effets secondaires magiques qui lient inextricablement l'élément Name à la propriété Text propriété.

Troisièmement, vous pouvez modifier les paramètres, mais tant que vous ne les enregistrez pas, ils ne sont pas réécrits dans votre app.config. Dans une application Windows Forms, vous devriez faire quelque chose comme ceci :

// event handler for the Form.Closed event.
// this.FormClosed += FormClosed;
void FormClosed(object sender, FormClosedEventArgs e)
{
    Settings.Default.Name = textBox.Text;
    Settings.Default.Save();
}

Dans WPF, vous utiliseriez la sémantique de liaison normale (ce qui signifie que vous évitez de devoir définir toutes les valeurs de propriété lors de la fermeture), mais vous devez toujours attendre la fermeture du formulaire pour pouvoir pour pouvoir enregistrer les paramètres.

Reliure :

<TextBox 
  xmlns:lol="clr-namespace:MyApplication.Settings"
  Text="{Binding Name, Source={x:Static lol:Default}}" />

L'appel à la fonction Save() se déroule à peu près comme dans l'exemple des formulaires, mais vous n'avez rien d'autre à faire que d'appeler Save().

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X