1.前言
WPF轉換器的作用:實現源數據和目標數據之間進行特定的轉化
轉化實現方式:通過實現接口System.Windows.Data名空間的IValueConverter接口進行單值轉換、通過實現IMutilValueConverter接口進行多值轉換
2.WPF轉換器實現: 通過實現IvalueConverter 接口的Convert 方法,將源數據轉換為目標數據;若轉換模式為TwoWay,則通過實現IValueConverter接口的ConvertBack方法,將目標數據轉換為源數據,若轉換模式為OneWay,則該方法可不做實現,直接返回null;
IValueConverter接口進行值轉換的具體實現:
后端轉換類代碼,該實例實現子panel的寬度為父panel實際寬度的一半:
1 public class MathConverter: IValueConverter 2 { 3 public object Convert(object value,Type targetType,object parameter,System.Globalization.CultureInfo cultureInfo) 4 { 5 try 6 { 7 if (value != null && parameter != null) 8 return Double.Parse(value.ToString())* Double.Parse(parameter.ToString()); 9 else return 600; 10 } 11 catch (Exception ex) 12 { 13 return 600; 14 } 15 16 } 17 public object ConvertBack(object value, Type targetType,object parameter, System.Globalization.CultureInfo cultureInfo) { 18 throw new NotImplementedException(); 19 } 20 }
前端xaml代碼如下:
1 <DockPanel Grid.ColumnSpan="2" Name="mainPanl" LastChildFill="True" Background="#FFF3E8E8"> 2 <DockPanel Grid.Row="0" Name="p1" DockPanel.Dock="Top" Background="Green" Height="30px" ></DockPanel> 3 <DockPanel Grid.Row="0" Grid.Column="0" Name="p2" DockPanel.Dock="Bottom" Background="Red" Height="150" ></DockPanel> 4 <DockPanel Grid.Column="0" Name="p3" DockPanel.Dock="Left" Background="Gray" LastChildFill="False" Width="{Binding ActualWidth, ConverterParameter=0.5, Converter={StaticResource MathConverter}, ElementName=mainPanl, Mode=OneWay, NotifyOnSourceUpdated=True, TargetNullValue=600}" /> 5 <DockPanel Grid.Column="1" Name="p4" LastChildFill="True" Background="Yellow"></DockPanel> 6 </DockPanel>
本示例,主要講解通過創建轉換類,實現IValueConverter接口的Convert方法,前端通過數據綁定轉換器的方式,來實現數據的轉換,下一篇將詳細講解通過實現IMutilValueConverter接口(文章鏈接:https://www.cnblogs.com/ramo/p/13488972.html),來進行多值轉換。