Procédure : Effectuer une liaison à une méthodeHow to: Bind to a Method

L’exemple suivant montre comment lier une à l’aide de la méthode ObjectDataProvider.The following example shows how to bind to a method using ObjectDataProvider.

ExempleExample

Dans cet exemple, TemperatureScale est une classe qui possède une méthode ConvertTemp, qui prend deux paramètres (TempType), un de type double et l’autre de type enum) et convertit la valeur donnée d’une échelle de température à une autre.In this example, TemperatureScale is a class that has a method ConvertTemp, which takes two parameters (one of double and one of the enum type TempType) and converts the given value from one temperature scale to another. Dans l’exemple suivant, un ObjectDataProvider est utilisé pour instancier le TemperatureScale objet.In the following example, an ObjectDataProvider is used to instantiate the TemperatureScale object. La méthode ConvertTemp est appelée avec deux paramètres spécifiés.The ConvertTemp method is called with two specified parameters.

<Window.Resources>
  <ObjectDataProvider ObjectType="{x:Type local:TemperatureScale}"
                      MethodName="ConvertTemp" x:Key="convertTemp">
    <ObjectDataProvider.MethodParameters>
      <system:Double>0</system:Double>
      <local:TempType>Celsius</local:TempType>
    </ObjectDataProvider.MethodParameters>
  </ObjectDataProvider>

  <local:DoubleToString x:Key="doubleToString" />

</Window.Resources>

Maintenant que la méthode est disponible en tant que ressource, vous pouvez effectuer la liaison à ses résultats.Now that the method is available as a resource, you can bind to its results. Dans l’exemple suivant, le Text propriété de la TextBox et SelectedValue de la ComboBox sont liés aux deux paramètres de la méthode.In the following example, the Text property of the TextBox and the SelectedValue of the ComboBox are bound to the two parameters of the method. Cela permet aux utilisateurs de spécifier la température à convertir et l’échelle de température à partir de laquelle effectuer la conversion.This allows users to specify the temperature to convert and the temperature scale to convert from. Notez que BindsDirectlyToSource a la valeur true , car nous effectuons une liaison à la MethodParameters propriété de la ObjectDataProvider instance et non aux propriétés de l’objet encapsulé par le ObjectDataProvider (le TemperatureScale objet).Note that BindsDirectlyToSource is set to true because we are binding to the MethodParameters property of the ObjectDataProvider instance and not properties of the object wrapped by the ObjectDataProvider (the TemperatureScale object).

Le Content du dernier Label met à jour lorsque l’utilisateur modifie le contenu de la TextBox ou la sélection de la ComboBox.The Content of the last Label updates when the user modifies the content of the TextBox or the selection of the ComboBox.

<Label Grid.Row="1" HorizontalAlignment="Right">Enter the degree to convert:</Label>
<TextBox Grid.Row="1" Grid.Column="1" Name="tb">
  <TextBox.Text>
    <Binding Source="{StaticResource convertTemp}" Path="MethodParameters[0]"
             BindsDirectlyToSource="true" UpdateSourceTrigger="PropertyChanged"
             Converter="{StaticResource doubleToString}">
      <Binding.ValidationRules>
        <local:InvalidCharacterRule/>
      </Binding.ValidationRules>
    </Binding>
  </TextBox.Text>
</TextBox>
<ComboBox Grid.Row="1" Grid.Column="2" 
  SelectedValue="{Binding Source={StaticResource convertTemp},
  Path=MethodParameters[1], BindsDirectlyToSource=true}">
  <local:TempType>Celsius</local:TempType>
  <local:TempType>Fahrenheit</local:TempType>
</ComboBox>
<Label Grid.Row="2" HorizontalAlignment="Right">Result:</Label>
<Label Content="{Binding Source={StaticResource convertTemp}}"
    Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2"/>

Le convertisseur DoubleToString prend une valeur double et la convertit en une chaîne dans le Convert direction (à partir de la source de liaison à la cible de liaison, qui est la Text propriété) et convertit un string à un double dans le ConvertBack direction.The converter DoubleToString takes a double and turns it into a string in the Convert direction (from the binding source to binding target, which is the Text property) and converts a string to a double in the ConvertBack direction.

Le InvalidationCharacterRule est un ValidationRule qui vérifie les caractères non valides.The InvalidationCharacterRule is a ValidationRule that checks for invalid characters. Le modèle d’erreur par défaut, qui est une bordure rouge autour de la TextBox, s’affiche pour signaler aux utilisateurs la valeur d’entrée n’est pas une valeur double.The default error template, which is a red border around the TextBox, appears to notify users when the input value is not a double value.

Voir aussiSee also