将数据从Azure / IEnumerable加载到ListBox

时间:2013-10-14 23:30:27

标签: c# silverlight azure mvvm

基本问题,我想从Azure服务器加载数据并查看将其发送到XAML。可以是ListBox或LongListSelector(最佳选项)。你能纠正我的代码吗?我究竟做错了什么?

从Azure加载数据并将其发送到IEnumerable集合。

视图模型

             public class ViewModel : INotifyPropertyChanged
                {
                    private readonly ICommand _loadDataCommand;
                    private MobileServiceCollection<ModelAzure, ModelAzure> _items;
                    public event PropertyChangedEventHandler PropertyChanged;
                    public IEnumerable itemsControl;

              private async void RefreshTodoItems()
                {
                    try
                    {
                        _items = await _todoTable.ToCollectionAsync();
                    }
                    catch (MobileServiceInvalidOperationException e)
                    {
                        MessageBox.Show(e.Message, "Error loading items, please try again :)", MessageBoxButton.OK);
                    }
                   itemsControl = _items;
                }



                public ICommand LoadDataCommand
                {
                    get { return this._loadDataCommand; }
                }

                private void LoadDataAction(object p)
                {
                    RefreshTodoItems();
                }

                public IEnumerable AzureData
                {
                    get
                    {
                        return itemsControl;
                    }
                    set
                    {
                        itemsControl = value;
                        RaisePropertyChanged("AzureData");
                    }
                }

         private void RaisePropertyChanged(string propertyName)
            {
                PropertyChangedEventHandler handler = this.PropertyChanged;
                if (handler != null)
                {
                    handler(this, new PropertyChangedEventArgs(propertyName));
                }
            }
}

XAML

<ListBox Grid.Column="0" Margin="5"
                 ItemsSource="{Binding AzureData}"
                 DisplayMemberPath="Text" Height="180"
                 />

1 个答案:

答案 0 :(得分:1)

您需要使用setter设置AzureData ..而不仅仅是私有后备变量,以便触发RaisePropertyChanged事件。

AzureData = _items;