INotifyPropertyChanged - always null
<p>My class "ship" should change value of property "ShipOnePos" continuously. This value is binded to one of UI element (image) property. I like to update my UI according to "ShipOnePos" (when it is changed). So for this reason I use interface INotifyPropertyChanged, but UI is not updating, and PropertyChanged value is always null. </p>

<p>Can You advice what I miss, or what is wrong in this implementation ? </p>

<p>Class: 
<div class="snippet" data-lang="js" data-hide="false">
<div class="snippet-code">
<pre class="snippet-code-css lang-css prettyprint-override"><code>namespace DzienNaWyscigach
{
    public class ship : INotifyPropertyChanged 
    {
        
        public event PropertyChangedEventHandler PropertyChanged;
        private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }

        }

        private int MyShipOnePos;

        public int ShipOnePos
        {
            get { return MyShipOnePos; }
            set { MyShipOnePos = value; 
                  NotifyPropertyChanged(); 
                }
        }

        public void ShipsMovment()
        {
            DispatcherTimer timer = new DispatcherTimer();
            timer.Interval = TimeSpan.FromMilliseconds(500);
            timer.Tick += Timer_Tick;
            timer.Start();
            
        }

        private void Timer_Tick(object sender, EventArgs e)
        {
            ShipOnePos= ShipOnePos+10;

        }
    }
}</code></pre>
</div>
</div>
</p>

<p>UI Binding
<div class="snippet" data-lang="js" data-hide="false">
<div class="snippet-code">
<pre class="snippet-code-css lang-css prettyprint-override"><code>&lt;Image x:Name="ShipOne" HorizontalAlignment="Left" Height="71" Margin="31,32,0,0" VerticalAlignment="Top" Width="80" Source="Asets/ship1.png" RenderTransformOrigin="0.5,0.5"&gt;
            &lt;Image.DataContext&gt;
                &lt;local:ship/&gt;
            &lt;/Image.DataContext&gt;
            &lt;Image.RenderTransform&gt;
                &lt;TransformGroup&gt;
                    &lt;ScaleTransform/&gt;
                    &lt;SkewTransform/&gt;
                    &lt;RotateTransform/&gt;
                    &lt;TranslateTransform X="{Binding Path=ShipOnePos, Mode=OneWay}"/&gt;
                &lt;/TransformGroup&gt;
            &lt;/Image.RenderTransform&gt;</code></pre>
</div>
</div>
</p>

<p>Code behind </p>

<p><div class="snippet" data-lang="js" data-hide="false">
<div class="snippet-code">
<pre class="snippet-code-css lang-css prettyprint-override"><code> private void BTN_Start_Click(object sender, RoutedEventArgs e)
        {
           ship Ships = new ship();
            Ships.ShipsMovment();
            
        }</code></pre>
</div>
</div>
</p>