在WP7中绑定数据后更新页面

本文关键字:更新 数据 WP7 绑定 | 更新日期: 2023-09-27 18:09:39

我们有从服务器获取数据的代码,数据被解压缩和解析,然后文件的名称以及与它们相关的图标应该显示在UI上,我们正在使用列表框并尝试将这2个元素绑定到列表框,数据被绑定,但我们无法在绑定后更新页面。'

</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
     <Image Source="{Binding Icon, Mode=OneWay}" Grid.Column="0" HorizontalAlignment="Center" Grid.Row="1"/>
<TextBlock Padding="10" Text="{Binding Widget, Mode=OneWay}" FontSize="20" Grid.Row="2" Grid.RowSpan="2" TextWrapping="Wrap"  Grid.ColumnSpan="2" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>`   

在WP7中绑定数据后更新页面

确保:

  1. UIManager类被设置为XAML控件的数据上下文。
  2. UIManager必须实现INotifyPropertyChanged,以便通知UI,您绑定到的集合已经更改(有一些项目添加到它在您的情况下)。

  3. 最重要的-使用输出窗口来定位所有XAML绑定问题。

    类UIManager: inotifypropertychanged{

    private ObservableCollection<ItemsList> _displayItem;
        public ObservableCollection<ItemsList> DisplayItem
        {
           get
           {
              return _displayItem;
           }
           set
           {
              if(value != _displayItem)
              {
                 _displayItem=value;
                 NotifyPropertyChanged("DisplayItem");
              }
           }
        public UIManager()
        {
           DisplayItem = new ObservableCollection<ItemsList>();
           DisplayCat(DataManager.getInstance().displayName, DataManager.getInstance().icons);
        }
        public void DisplayCat(string[] DisplayNames, BitmapImage[] Icon)
        {
                ObservableCollection<ItemsList> tmpColl = new ObservableCollection<ItemsList>();        
        for (int i = 0; i < DataManager.getInstance().count; i++)
            {
                    tmpColl.Add(new ItemsList { Widget = DisplayNames[i], Icon = Icon[i] });
            }
        DisplayItem = tmpColl;
        }
    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(String info)
    {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(info));
            }
    }
    

    }