Обновление страницы после привязки к ней данных в WP7 - PullRequest
0 голосов
/ 23 сентября 2011

у нас есть код, который получает данные с сервера, данные распаковываются и анализируются, после чего имена файлов и связанные с ними значки должны отображаться в пользовательском интерфейсе, мы используем список и пытаемся связатьэти 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>`   

1 Ответ

2 голосов
/ 23 сентября 2011

Убедитесь, что:

  1. Класс UIManager установлен как dataContext для элемента управления XAML.
  2. UIManager должен реализовать INotifyPropertyChanged в порядкечтобы уведомить пользовательский интерфейс о том, что коллекция, к которой вы привязываете, изменилась (в вашем случае к ней добавлены некоторые элементы).

  3. Самое важное - используйте окна вывода, чтобы найти все проблемы привязки XAML.

    класс UIManager: INotifyPropertyChaged {

    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));
            }
    }
    

    }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...