WPF 中轉換器 --Converter使用詳解(一)


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),來進行多值轉換。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM