Como associar a um método
O exemplo a seguir mostra como vincular a um método usando ObjectDataProvider.
Exemplo
Neste exemplo, TemperatureScale
é uma classe que tem um método ConvertTemp
, que usa dois parâmetros (um do tipo double
e outro do tipo enum
TempType)
e converte o valor dado de uma escala de temperatura em outra. No exemplo a seguir, um ObjectDataProvider é usado para instanciar o TemperatureScale
objeto. O método ConvertTemp
é chamado com dois parâmetros especificados.
<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, é possível associar aos seus resultados. No exemplo a seguir, a Text propriedade de e TextBox a SelectedValue de são ComboBox associadas aos dois parâmetros do método. Isso permite que os usuários especifiquem a temperatura a ser convertida e a escala de conversão. Observe que BindsDirectlyToSource é definido como true
porque estamos vinculando à propriedade da ObjectDataProvider instância e não às MethodParameters propriedades do objeto encapsulado pelo ObjectDataProvider (o TemperatureScale
objeto).
O Content das últimas Label atualizações quando o usuário modifica o conteúdo do ou a seleção do TextBoxComboBox.
<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
pega Convert um duplo e o transforma em uma cadeia de caracteres na direção (da origem da vinculação para o destino da vinculação, que é a propriedade) e converte a em a double
Textstring
na ConvertBack direção.
O InvalidationCharacterRule
é um ValidationRule que verifica se há caracteres inválidos. O modelo de erro padrão, que é uma borda vermelha ao redor do TextBox, parece notificar os usuários quando o valor de entrada não é um valor duplo.
Confira também
.NET Desktop feedback
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de