• 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;
            }
        }
  • 相关阅读:
    解决Linux ssh登录马上退出问题
    FineReport实线java报表填报录入的效果图
    CCEditBox/CCEditBoxImplMac
    Android图片异步载入框架Android-Universal-Image-Loader
    HYAppFrame(WinForm框架源代码)安装部署指南
    ASP.NET Web Api 2 接口API文档美化之Swagger
    Android OTA在线升级一(架构分析)【转】
    Android进程间通信(IPC)机制Binder简要介绍和学习计划【转】
    Linux内核源码中的likely和unlikely释疑【转】
    Android蓝牙串口通讯【转】
  • 原文地址:https://www.cnblogs.com/guofeiji/p/5503404.html
Copyright © 2020-2023  润新知