文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Silverlight中一个关于集合绑定的错误

Silverlight中一个关于集合绑定的错误

时间:2011-03-04  来源:无名菜鸟

看下代码,AData是我遇到的问题,BData是改正后的。
AData和BData唯一的不同点在Change()方法中。

public class Model : INotifyPropertyChanged
{
    public List<string> AData { get; set; }
    public List<string> BData { get; set; }
    //初始化点数据
    public Model()
    {
        AData = new List<string>();
        BData = new List<string>();
        for (int i = 0; i < 8; i++)
        {
            AData.Add("AAA" + i);
            BData.Add("BBB" + i);
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    public void OnPropertyChanged(string name)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(name));
    }

    //改变数据
    public void Change()
    {
        BData = new List<string>();//关键在这里
        AData.Clear();             //唯一的不同点

        for (int i = 10; i < 18; i++)
        {
            AData.Add("AAA" + i);
            BData.Add("BBB" + i);
        }
        OnPropertyChanged("AData");
        OnPropertyChanged("BData");
    }
}
将AData和BData分别绑定到两个ComboBox的ItemsSource上。程序运行后先看一下两个ComboBox中的数据(一定要点开看看),然后执行Change()方法。
当执行完Changed()方法后,问题来了,绑定AData的那个ComboBox的数据并没有改变,问题很奇怪。执行完OnPropertyChanged("AData");后确实调AData的get方法了。
不知道是我的想法不对,还是我没有理解好,最后重新new出来一个List,却把问题解决了。

ps.还有点要说明的,如果ComboBox不点开,在执行Change后,数据倒是改变了。

不知道大家遇到过这个问题没有,以后进行集合绑定时一定得想清楚,对于AData来说用ObservableCollection<T>估计没有问题了。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载