• 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;
            }
        }
  • 相关阅读:
    SQL 多条件查询
    android实现程序开机自启动
    SendMessage模拟按键所需的虚拟键码
    使用API进行文件读写——CreateFile,ReadFile,WriteFile等
    VB断点拷贝大文件(WIN7系统需要更改某个API函数,具体我也忘了)
    mysql
    webstorm
    ubuntu ftp服务器
    centos ftp 服务器
    nignx
  • 原文地址:https://www.cnblogs.com/guofeiji/p/5503404.html
Copyright © 2020-2023  润新知