Bind to a Method
<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:system="clr-namespace:System;assembly=mscorlib" xmlns:WpfApplication1="clr-namespace:WpfApplication1" Title="WPF" Width="240" Height="150" > <Window.Resources> <WpfApplication1:DoubleToString x:Key="doubleToString" /> <ObjectDataProvider x:Key="convertDistance" ObjectType="{x:Type WpfApplication1:DistanceConverter }" MethodName="Convert" > <ObjectDataProvider.MethodParameters> <system:Double>0</system:Double> <WpfApplication1:DistanceType>Miles</WpfApplication1:DistanceType> </ObjectDataProvider.MethodParameters> </ObjectDataProvider> </Window.Resources> <StackPanel> <TextBlock Text="Enter a distance to convert:"/> <TextBox Text ="{Binding Source={StaticResource convertDistance}, Path=MethodParameters[0],BindsDirectlyToSource=true,UpdateSourceTrigger=PropertyChanged, Converter={StaticResource doubleToString}}"/> <ComboBox Width="80" HorizontalAlignment="Left" SelectedValue="{Binding Source={StaticResource convertDistance},Path=MethodParameters[1], BindsDirectlyToSource=true}" > <WpfApplication1:DistanceType>Miles</WpfApplication1:DistanceType> <WpfApplication1:DistanceType>Kilometres</WpfApplication1:DistanceType> </ComboBox> <TextBlock Text="Result:"/> <TextBlock Text="{Binding Source={StaticResource convertDistance}}"/> </StackPanel> </Window> //File:Window.xaml.vb Imports System Imports System.Windows.Data Namespace WpfApplication1 Public Class DoubleToString Implements IValueConverter Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert If value IsNot Nothing Then Return value.ToString() End If Return Nothing End Function Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack Dim strValue As String = TryCast(value, String) If strValue IsNot Nothing Then Dim result As Double Dim converted As Boolean = [Double].TryParse(strValue, result) If converted Then Return result End If End If Return Nothing End Function End Class Public Enum DistanceType Miles Kilometres End Enum Public Class DistanceConverter Public Function Convert(amount As Double, distancetype__1 As DistanceType) As String If distancetype__1 = DistanceType.Miles Then Return (amount * 1.6).ToString("0.##") & " km" End If If distancetype__1 = DistanceType.Kilometres Then Return (amount * 0.6).ToString("0.##") & " m" End If Throw New ArgumentOutOfRangeException("distanceType") End Function End Class End Namespace