Procedura: eseguire l'associazione a un metodoHow to: Bind to a Method

Nell'esempio seguente viene illustrato come associare a un metodo utilizzando ObjectDataProvider.The following example shows how to bind to a method using ObjectDataProvider.

EsempioExample

In questo esempio TemperatureScale è una classe che dispone di un metodo ConvertTemp che accetta due parametri, uno di tipo double e uno di tipo enum TempType) e converte il valore specificato da una scala della temperatura a altro.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. Nell'esempio seguente, un ObjectDataProvider viene utilizzato per creare un'istanza di TemperatureScale oggetto.In the following example, an ObjectDataProvider is used to instantiate the TemperatureScale object. Il metodo ConvertTemp viene chiamato con due parametri specificati.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>

Ora che il metodo è disponibile come una risorsa, è possibile associare i risultati.Now that the method is available as a resource, you can bind to its results. Nell'esempio seguente, il Text proprietà del TextBox e SelectedValue del ComboBox sono associati a due parametri del metodo.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. Ciò consente agli utenti di specificare la temperatura da convertire e la scala della temperatura da cui eseguire la conversione.This allows users to specify the temperature to convert and the temperature scale to convert from. Si noti che BindsDirectlyToSource è impostato su true perché viene eseguita l'associazione per il MethodParameters proprietà del ObjectDataProvider istanza e non le proprietà dell'oggetto sottoposto a wrapping dal ObjectDataProvider (il TemperatureScale oggetto).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).

Il Content dell'ultimo Label aggiornato quando l'utente modifica il contenuto del TextBox o la selezione del 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"/>

Il convertitore DoubleToString accetta un valore double e lo trasforma in una stringa nel Convert direzione (dall'origine dell'associazione alla destinazione dell'associazione, ovvero il Text proprietà) e converte un string per un double nel ConvertBack direzione.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.

Il InvalidationCharacterRule è un ValidationRule che verifica la presenza di caratteri non validi.The InvalidationCharacterRule is a ValidationRule that checks for invalid characters. Il modello di errore predefinito, ovvero un bordo rosso intorno il TextBox, viene visualizzata per notificare agli utenti quando il valore di input non è un valore 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.

Vedere ancheSee Also

Procedure relative alle proprietàHow-to Topics
Eseguire l'associazione a un'enumerazioneBind to an Enumeration