Это потому, что ваше первое условие установлено на <=1920
.
Так что, когда оно впервые достигло 1920 и запустило второе условие, оно стало меньше, чем 1920 СНОВА !
Вот почему он всегда будет чередоваться между первым и вторым условием, когда x мигает между 1920 и 1925!
Попробуйте создать дополнительную глобальную переменную, обозначающую DIRECTION изображения, а затем запустите операторы if.
private bool toRight=true;
private void Timer_Tick(object sender, object e)
{
if(toRight)
{
if (Canvas.GetLeft(_wolves.WolvesLeftAvatar()) <= 1920)
{
double x = Canvas.GetLeft(_wolves.WolvesLeftAvatar());
_wolves.WolvesLeftAvatar().Visibility = Visibility.Collapsed;
_wolves.WolvesRightAvatar().Visibility = Visibility.Visible;
x += 5;
Canvas.SetLeft(_wolves.WolvesRightAvatar(),x);
Canvas.SetLeft(_wolves.WolvesLeftAvatar(),x);
}
else
{
toRight=false;
double x = Canvas.GetLeft(_wolves.WolvesLeftAvatar());
_wolves.WolvesLeftAvatar().Visibility = Visibility.Visible;
_wolves.WolvesRightAvatar().Visibility = Visibility.Collapsed;
x -= 5;
Canvas.SetLeft(_wolves.WolvesRightAvatar(), x);
Canvas.SetLeft(_wolves.WolvesLeftAvatar(), x);
}
}
else
{
if (Canvas.GetLeft(_wolves.WolvesLeftAvatar()) >= 0)
{
double x = Canvas.GetLeft(_wolves.WolvesLeftAvatar());
_wolves.WolvesLeftAvatar().Visibility = Visibility.Visible;
_wolves.WolvesRightAvatar().Visibility = Visibility.Collapsed;
x -= 5;
Canvas.SetLeft(_wolves.WolvesRightAvatar(), x);
Canvas.SetLeft(_wolves.WolvesLeftAvatar(), x);
}
else
{
toRight=true;
double x = Canvas.GetLeft(_wolves.WolvesLeftAvatar());
_wolves.WolvesLeftAvatar().Visibility = Visibility.Collapsed;
_wolves.WolvesRightAvatar().Visibility = Visibility.Visible;
x += 5;
Canvas.SetLeft(_wolves.WolvesRightAvatar(),x);
Canvas.SetLeft(_wolves.WolvesLeftAvatar(),x);
}
}
}
Еще лучше, вы можете заставить изображение двигаться как метод и вызывать его.
private bool toRight=true;
private void MoveX(int m)
{
double x = Canvas.GetLeft(_wolves.WolvesLeftAvatar());
if(m>0)
{
_wolves.WolvesLeftAvatar().Visibility = Visibility.Collapsed;
_wolves.WolvesRightAvatar().Visibility = Visibility.Visible;
}
else
{
_wolves.WolvesLeftAvatar().Visibility = Visibility.Visible;
_wolves.WolvesRightAvatar().Visibility = Visibility.Collapsed;
}
x += m;
Canvas.SetLeft(_wolves.WolvesRightAvatar(),x);
Canvas.SetLeft(_wolves.WolvesLeftAvatar(),x);
}
private void Timer_Tick(object sender, object e)
{
if(toRight)
{
if (Canvas.GetLeft(_wolves.WolvesLeftAvatar()) <= 1920)
{
MoveX(5);
}
else
{
toRight=false;
MoveX(-5);
}
}
else
{
if (Canvas.GetLeft(_wolves.WolvesLeftAvatar()) >= 0)
{
MoveX(-5);
}
else
{
toRight=true;
MoveX(5);
}
}
}