Update Pivot Control with Mvvm-light tools for WP7

There is a control in my Xaml:

    <controls:Pivot ItemsSource="{Binding ObjectList}">
        <controls:Pivot.HeaderTemplate>
            <DataTemplate>
                <TextBlock />
            </DataTemplate>
        </controls:Pivot.HeaderTemplate>
        <controls:Pivot.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Text="{Binding Value1}" />
                    <TextBlock Text="{Binding Value2}" />
                </StackPanel>
            </DataTemplate>
        </controls:Pivot.ItemTemplate>
    </controls:Pivot>    

My ViewModel:

public class MyObject
{
    public string Value1 { get; set; }
    public string Value2 { get; set; }
}

public class MyViewModel : ViewModelBase
{
    public const string ObjectListPropertyName = "ObjectList";
    private ObservableCollection<MyObject> _objectList;
    public ObservableCollection<MyObject> ObjectList
    {
        get
        {
            return _objectList;
        }

        private set
        {
            if (_objectList == value)
                return;
            _objectList = value;
            RaisePropertyChanged(ObjectListPropertyName);
        }
    }

    private DispatcherTimer timer;

    public MyViewModel()
    {
        ObservableCollection<MyObject> collection = new ObservableCollection<MyObject>
                          {
                              new MyObject {Value1 = "One"},
                              new MyObject {Value1 = "Two"},
                              new MyObject {Value1 = "Tree"}
                          };
        ObjectList = collection;
        timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(2)};
        timer.Tick += timer_Tick;
        timer.Start();
    }

    void timer_Tick(object sender, EventArgs e)
    {
        foreach (MyObject myObject in _objectList)
        {
            myObject.Value2 = "Something";
        }
        Application.Current.RootVisual.Dispatcher.BeginInvoke( () => RaisePropertyChanged(ObjectListPropertyName));
    }
}

When the timer_tick value is reached, I assume that the rotation control is updated with the new values โ€‹โ€‹... but I do not see any changes.

What am I missing?

Thank you in advance for your help.

+3
source share
1 answer

I assume that updating members of the list without updating the list itself is possible. When you raise an event of a changed property, it is intended for the entire collection. The collection still points to an equal reference to itself, despite the fact that the members have changed.

, .

+2

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


All Articles