zoukankan      html  css  js  c++  java
  • WPF多源绑定

    将控件绑定到多个数据源,ListBox绑定到一个集合,其中每一项绑定到集合中对象的两个属性,并对绑定进行了格式化。

    <ListBox ItemsSource="{StaticResource MyData}" IsSynchronizedWithCurrentItem="True"> 
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <TextBlock>
                              <TextBlock.Text>
                                <MultiBinding  StringFormat="{}{0} -- Now only {1:C}!">
                                 <Binding Path="Description"/>
                                  <Binding Path="Price"/>
                                </MultiBinding>
                               </TextBlock.Text>
                        </TextBlock>
                    </DataTemplate>
                </ListBox.ItemTemplate>
        </ListBox>

    多源绑定的自定义值转换。下面TextBlock控件绑定到NameListData集合中的一项,当集合中的某个对象被选择后,该对象的两个属性同自定义转换器转换为显示值,对象的两个属性分别是FirstName和LastName,通过转换器,控件显示完整的姓名。这类似上述的多源绑定的格式化,但转换器可以接受参数,因此更灵活,此处,可以通过参数控制FirstName和LastName的显示顺序。

    <TextBlock Name="textBox1" DataContext="{StaticResource NameListData}">
          <TextBlock.Text>
           <MultiBinding Converter="{StaticResource myNameConverter}" ConverterParameter="FormatNormal">
                <Binding Path="FirstName"/>
                <Binding Path="LastName"/>
            </MultiBinding>
           </TextBlock.Text>
       </TextBlock>

    下面是自定义转换器的实现,该类必须实现接口IMultiValueConverter,其中Convert实现数据源到控件方向的转换,而ConvertBack相反:

    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;
            }
        }
  • 相关阅读:
    C# 比较多个数组(lambda,匿名比较器)
    JPA javax.persistence.TransactionRequiredException
    JPA:identifier of an instance of was altered from
    JPA 连表查询
    java json转换(二)
    java querydsl使用
    SpringCloud 过滤器
    Android : Resource is not a Drawable (color or path)
    springcloud 新增微服务
    序列化二叉树
  • 原文地址:https://www.cnblogs.com/guofeiji/p/5503404.html
Copyright © 2011-2022 走看看