Mega Code Archive

 
Categories / VB.Net Tutorial / WPF
 

Bind to enum types

<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