Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nell'esempio seguente viene illustrato come eseguire l'associazione a un metodo usando ObjectDataProvider.
Esempio
In questo esempio, TemperatureScale è una classe che ha un metodo ConvertTemp, che accetta due parametri (uno di double e uno del enum tipo TempType) e converte il valore specificato da una scala di temperatura a un'altra. Nell'esempio seguente un ObjectDataProvider viene usato per istanziare l'oggetto TemperatureScale. Il ConvertTemp metodo viene chiamato con due parametri specificati.
<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 risorsa, è possibile associarlo ai risultati. Nell'esempio seguente, la Text proprietà di TextBox e SelectedValue di ComboBox sono associate ai due parametri del metodo . In questo modo gli utenti possono specificare la temperatura da cui convertire e la scala della temperatura da cui eseguire la conversione. Si noti che BindsDirectlyToSource è impostato su true perché l'associazione viene eseguita al MethodParameters attributo dell'istanza ObjectDataProvider e non agli attributi dell'oggetto di cui è stato effettuato l'incapsulamento (l'oggetto ObjectDataProviderTemperatureScale).
L'Content dell'ultimo Label si aggiorna quando l'utente modifica il contenuto del TextBox o la selezione del 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 nella direzione Convert (dall'origine di associazione alla destinazione di associazione, che è la proprietà Text) e converte un string in un double nella direzione ConvertBack.
InvalidCharacterRule è un oggetto ValidationRule che verifica la presenza di caratteri non validi. Il modello di errore predefinito, che è un bordo rosso intorno a TextBox, viene visualizzato per notificare agli utenti quando il valore di input non è un valore doppio.
Vedere anche
.NET Desktop feedback