none
WPF绑定到列表的问题 RRS feed

  • 问题

  • 要绑定到列表,CLR对象必须实现IEnumerable接口,下面是我一个例子,我是用List泛型集合来存放Address的

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Collections;
    
    namespace WpfDateBinding
    {
     public class Person 
     { 
     
     public List<Address> Addresses
     {
     get { return Addresses.GetEnumerator().Current; }
     set
     {
     Addresses.Add(address);
     }
     }
    
     
     public Address address{get;set;}
     public Person(Address addr)
     {
     
     Addresses.Add(address);
     }
     public IEnumerator GetEnumerator()
     {
     return Addresses.GetEnumerator();
     }
     }
    }
    

    这是我按照自己的理解写的,如果有误,请帮忙指正。我的问题是get { return Addresses.GetEnumerator().Current; }这里类型转换出现了问题,我想要的是返回Addresses集合对象

    在XMAL中 想达到这样的效果

     

    <TextBlock Text="{Binding Path=Addresses[0].AddressName}" />
     <TextBlock Text="{Binding Path=Addresses[0].Street}" />
     <TextBlock Text="{Binding Path=Addresses[0].City}" />
     <TextBlock Text="{Binding Path=Addresses[0].State}" />
     <TextBlock Text="{Binding Path=Addresses[0].Zip}" />
    
    


    MainWindow.cs

     

    public MainWindow()
      {
       InitializeComponent();
    
        DataContext = new Person( 
      
        new Address(
           "Work",
           "Microsoft",
           "One My Way",
           "WA",
           "950853"
          )
          );
      }
    


     

     







    2011年6月10日 3:55

答案

  • 你直接饭返回 List<Address>就可以了,代码如下:

    public List<Address> Addresses { getset; }
    

     

     

    List<T>已经实现接口了:

    public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IListICollectionIEnumerable
    

     


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    • 已标记为答案 conarena 2011年6月10日 11:22
    2011年6月10日 9:52
    版主