Como: Bind to a Method
O exemplo a seguir mostra como ligar a um método utilizando ObjectDataProvider.
Exemplo
Neste exemplo, TemperatureScale é uma classe que tem um método ConvertTemp, que recebe dois parâmetros (um double e um TempType) do tipo enum) e converte o valor dado de uma escala de temperatura para outra. No exemplo a seguir, um ObjectDataProvider é utilizado para instanciar o objeto TemperatureScale. O método ConvertTemp é chamado com dois parâmetros específicos.
<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>
Agora que o método está disponível como um recurso, você pode ligar a seus resultados. No exemplo a seguir, a propriedade Text do TextBox e o SelectedValue do ComboBox estão ligadas aos dois parâmetros do método. Isso permite que os usuários especifiquem a temperatura para converter e a escala de temperatura da qual converter. Observe que BindsDirectlyToSource é definido como true porque estamos ligando dom a propriedade MethodParameters da instância ObjectDataProvider e não propriedades do objeto wrapped pelo ObjectDataProvider (o objeto TemperatureScale).
A Content do último Label é atualizado quando o usuário modifica o conteúdo do TextBox ou a seleção do 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"/>
O conversor DoubleToString toma um double e o converte em um string na direção Convert (da origem de ligação para destino da ligação, que é a propriedade Text) e converte um string para um double na direção ConvertBack.
O InvalidationCharacterRule é um ValidationRule que verifica se há caracteres inválidos. O modelo de erro default, que é uma borda vermelha em torno do TextBox, aparece para avisar os usuários quando o valor de entrada não é um valor double.
For the complete example, see VinculParando Paraos resultParados de um exemplo de mParaParado.
Consulte também
Tarefas
Como: Como Associar a uma Enumeração