Q:

Xamarin ObservableCollection ListView not refresh

How to refresh automaticly ListView? 
I tried PropertyChange but that did not help me.  Apparently I did not understand how to do this, although I did everything according to the instructions
//////////////////////////////////////////////////////////////////////////////////
ViewModel
    public class ChatPageViewModel
        {
            public ObservableCollection<Message> Messages { get; set; }
            public string TextToSend { get; set; }
            public ICommand OnSendCommand { get; set; }

            public UserModel interlocutor { get; set; }

            public ChatPageViewModel()
            {
                ApiServices api = new ApiServices();

                Messages = new ObservableCollection<Message>() { };

                //This work and refresh when user send message
                OnSendCommand = new Command(() =>
                {
                    if (! string. IsNullOrEmpty(TextToSend))
                    {
                        Messages. Insert(0, new Message() { Text = TextToSend, User = App. User });
                        var isSuccses = api. SendMessage(interlocutor. ID, TextToSend);
                        TextToSend = string. Empty;
                    }

                });

                Device. StartTimer(TimeSpan. FromSeconds(1), () =>
                {
                    Task. Run(async () =>
                    {
                        //Work, but not refresh.  If user send message collection refresh
//I want refresh here
                        string mess = await api. ChekMessages(App. User, interlocutor).ConfigureAwait(false);
                        if (mess ! = null)
                            Messages. Insert(0, new Message() {User = interlocutor, Text = mess});
                    });
                    return true;
                });
            }

        }

Page
///////////////////////////////////////////////////////////////////////
<? xml version="1.0" encoding="utf-8" ? >
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d"
             x:Class="Messenger. Views. ChatPage"
             xmlns:local="clr-namespace:Messenger. Helpers" 
             Title="Chat">
    <ContentPage. Resources>
        <ResourceDictionary>
            <local:ChatTemplateSelector x:Key="MessageTemplateSelector"/>
        </ResourceDictionary>
    </ContentPage. Resources>
    <Grid RowSpacing="0" 
          ColumnSpacing="0">
        <Grid. RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="1" />
            <RowDefinition Height="Auto" />
        </Grid. RowDefinitions>
        <ListView Grid. Row="0" 
                 ItemTemplate="{StaticResource MessageTemplateSelector}" 
                 ItemsSource="{Binding Messages}" 
                 Margin="0" 
                 HasUnevenRows="True" 
                 VerticalOptions="FillAndExpand" 
                 SeparatorColor="Transparent" 
                 RotationX="180">
        </ListView>
        <BoxView HorizontalOptions="FillAndExpand"
                 HeightRequest="3"
                 BackgroundColor="#99FFE1"
                 Grid. Row="1"/>
        <Grid 
            Grid. Row="2"
            RowSpacing="0" 
            ColumnSpacing="0"
            Margin="0,0,10,0">
            <Grid. RowDefinitions>
                <RowDefinition Height="Auto" />
            </Grid. RowDefinitions>
            <Grid. ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="Auto" />
            </Grid. ColumnDefinitions>
            <Entry x:Name="chatTextInput" 
                 Text="{Binding TextToSend}" 
                 Margin="1"  
                 TextColor="Black" 
                 Keyboard="Chat"  
                 HorizontalOptions="FillAndExpand" 
                 PlaceholderColor="LightGray"
                 Placeholder="Type your message here"
                 Grid. Row="0" 
                 Grid. Column="0"
                 Completed="Handle_Completed"/>
            <Label x:Name="sendLabel"
               Text="Send"
               Grid. Row="0"
               Grid. Column="1"
               VerticalTextAlignment="Center">
                <Label. GestureRecognizers>
                    <TapGestureRecognizer
                      Command="{Binding OnSendCommand}"
                      Tapped="Handle_Completed"/>
                </Label. GestureRecognizers>
            </Label>
        </Grid>
    </Grid>
</ContentPage>

A:

I replaced if(mess ! = null) with if(!String. IsNullOrEmpty(mess))

