zoukankan      html  css  js  c++  java
  • Data Conversion

    除了将单个不同类型的数据转换类型,使它与target的数据类型匹配外,有时我们需要muti binding,它可以将一个target property绑定source object的多个不同属性,然后通过实现IMultiValueConverter接口,根据不同的逻辑来决定target property要显示什么。
    如下,首先有一个Data object类:

    public class MyData
        {
            
    public MyData()
            {
            }
            
    private string _firstName;
            
    private string _lastName;

            
    public string FirstName
            {
                
    get { return _firstName; }
                
    set { _firstName = value; }
            }

            
    public string LastName
            {
                
    get { return _lastName; }
                
    set { _lastName = value; }
            }
        }


    然后是xaml文件:

    <Window x:Class="WpfApplication32.Window1"
        xmlns
    ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x
    ="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:c
    ="clr-namespace:WpfApplication32"
        Title
    ="Window1" Height="300" Width="300">
        
    <Window.Resources>
            
    <c:MyData x:Key="myData" FirstName="xiong" LastName="bear"></c:MyData>
            
    <c:NameConverter x:Key="myNameConverter"/>
        
    </Window.Resources>
        
    <Grid>
            
    <TextBlock Width="140" Height="50" Name="myText">
                
    <TextBlock.DataContext>
                    
    <Binding Source="{StaticResource myData}"></Binding>
                
    </TextBlock.DataContext>
                
    <TextBlock.Text>
                     
    <MultiBinding Converter="{StaticResource myNameConverter}"
                      ConverterParameter
    ="FormatLastFirst">
                        
    <Binding Path="FirstName"/>
                        
    <Binding Path="LastName"/>
                    
    </MultiBinding>
                
    </TextBlock.Text>
            
    </TextBlock>       
        
    </Grid>
    </Window>

    接下来是Converter类:

    public class NameConverter : IMultiValueConverter
        {
            
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
            {
                
    string name;

                
    switch ((string)parameter)
                {
                    
    case "FormatLastFirst":
                        name 
    = values[1+ "" + values[0];
                        
    break;
                    
    case "FormatNormal":
                    
    default:
                        name 
    = values[0+ " " + values[1];
                        
    break;
                }

                
    return name;
            }

            
    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
            {
                
    string[] splitValues = ((string)value).Split(' ');
                
    return splitValues;
            }
        }


    这样当指定不同的ConverterParameter时,就可以根据需要组合不同的显示值了。

  • 相关阅读:
    mongodb
    python中读取文件的read、readline、readlines方法区别
    uva 129 Krypton Factor
    hdu 4734
    hdu 5182 PM2.5
    hdu 5179 beautiful number
    hdu 5178 pairs
    hdu 5176 The Experience of Love
    hdu 5175 Misaki's Kiss again
    hdu 5174 Ferries Wheel
  • 原文地址:https://www.cnblogs.com/bear831204/p/1310813.html
Copyright © 2011-2022 走看看