views:

45

answers:

1

Hi everybody!

Building my first SL MVVM application (Silverlight4 RC) and have some issues i don't understand.

Having a WPF background i don't know what is going on here:

ViewModel has several properties, in which one is called SelectedRecord. This is a get only property and is defined like this:

    public Culture SelectedRecord { 
get { return culturesView.View.CurrentItem as Culture;  } }

As you can see it is gets the current value of a CollectionViewSource (called culturesView). So if i select a Culture, the SelectedRecord (gets a value directly from within the CollectionViewSource) as expected. (Actually there is a datagrid control bound to the CollectionViewSource, hence it is possible to change the selected item)

OK. Now to the View . There are several views which access this ViewModel and in particular there is one which shows the values of the aforementioned property SelectedRecord (let's call it the EditView). To show this EditView there is a button (which has its Command property bound to an ICommand in the ViewModel) which functions (the first time) as expected.

This means:

1st try : i select a record, switch to EditView, outcome: selected record values are shown (as expected!!).

2nd try: switch back to datagrid, select another record, switch to EditView, outcome: the values of the previous shown record are shown again!!! WHY??

First i thought that the SelectedRecord has not the correct value set, but i was mistaken: it HAS the correct value! So it should be shown!?

What am i missing? In WPF this would work!!

Thanks in advance

+1  A: 

When CurrentItem value changes, your ViewModel that has SelectedRecord must call RaisePropertyChanged("SelectedRecord") so whatever View is bound to it is notified about the change.

PL
You're absolutely right! I realized this also, after i had opened the thread! Thanks very much!
Savvas Sopiadis