Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In het volgende voorbeeld ziet u hoe u verbinding maakt met een methode met behulp van ObjectDataProvider.
Voorbeeld
In dit voorbeeld is TemperatureScale een klasse met een methode ConvertTemp, die twee parameters gebruikt (een van double en een van het enum type TempType) en de opgegeven waarde van de ene temperatuurschaal naar de andere converteert. In het volgende voorbeeld wordt een ObjectDataProvider gebruikt om het TemperatureScale-object te instantiƫren. De ConvertTemp methode wordt aangeroepen met twee opgegeven 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>
Nu de methode beschikbaar is als resource, kunt u zich binden aan de resultaten. In het volgende voorbeeld zijn de eigenschap Text van de TextBox en de SelectedValue van de ComboBox gebonden aan de twee parameters van de methode. Hierdoor kunnen gebruikers de temperatuur opgeven die moet worden geconverteerd en de temperatuurschaal waaruit moet worden geconverteerd. Houd er rekening mee dat BindsDirectlyToSource is ingesteld op true omdat we zijn gebonden aan de eigenschap MethodParameters van het ObjectDataProvider-exemplaar en niet de eigenschappen van het object dat is verpakt door de ObjectDataProvider (het TemperatureScale-object).
De Content van de laatste Label wordt bijgewerkt wanneer de gebruiker de inhoud van de TextBox of de selectie van de ComboBoxwijzigt.
<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"/>
Het conversieprogramma DoubleToString neemt een double en zet deze om in een tekenreeks in de Convert richting (van de bindingsbron naar het bindingsdoel, welke de eigenschap Text is) en converteert een string in een double in de ConvertBack richting.
De InvalidCharacterRule is een ValidationRule die controleert op ongeldige tekens. De standaardfoutsjabloon, een rode rand rond de TextBox, lijkt gebruikers op de hoogte te stellen wanneer de invoerwaarde geen dubbele waarde is.
Zie ook
.NET Desktop feedback