Linking data in Silverlight with RIA services

I am trying to display the contents of a table in a combobox.

I am using the MVVM template and in my viewmodel class, if I write this, it works:

private IEnumerable<EventType> _eventTypes;

public ManageProfileModel()
        {
            _referenceData = new ReferenceDataContext();

            _referenceData.Load(_referenceData.GetEventTypesQuery(), false);

            _eventTypes = _referenceData.EventTypes;
        }

Similarly, a drop-down field displays data.

However, I want _eventTypes to be List:

private List<EventType> _eventTypes;

But if I write this:

public ManageProfileModel()
        {
            _referenceData = new ReferenceDataContext();

            _referenceData.Load(_referenceData.GetEventTypesQuery(), false);

            _eventTypes = _referenceData.EventTypes.ToList();
        }

then the combo box is empty. What is wrong with this?

I want to use the List because I want to be able to add and delete data in the list.

Sincerely.

+3
source share
4 answers

DomainContext.Load , , , EntitySet . , StackOverflowException, , EntitySet , .

+1

just a shot right out of my head ...

Have you tried adding something like a propertychanged event to your list? so it may be that the data came asynchronously and the property was not informed of the change ...

as I said...

 private List<EventType> _eventTypes;
 public List<EventType> EventTypes
    {
        get { return _eventTypes; }
        set
        {
            _eventTypes = value;
            RaisePropertyChanged("EventTypes");
        }
    }

and also take a look at ObservableCollections ...

As I said, a shot ...

Hope this helps

0
source

I don't have much exposure to MVVM, but with silverlight + RIA, I usually do something like this.

private List<EventType> _eventTypes;
public ManageProfileModel()
{
    _referenceData = new ReferenceDataContext();

    var op = _referenceData.Load(_referenceData.GetEventTypesQuery(), false);
    op.Completed += op_Completed;

}

void po_Completed(object sender, EventArgs e)
{
    var op = ( InvokeOperation<IEnumerable<EventType>>)sender;
    _eventTypes = op.Value.ToList();
}
0
source

Source: https://habr.com/ru/post/1792945/


All Articles