My class "ship"はプロパティ "ShipOnePos"の値を連続的に変更する必要があります。この値は、UI要素(画像)プロパティのいずれかにバインドされます。私は "ShipOnePos"(変更されたとき)に従ってUIを更新したい。このため、私はインターフェイスINotifyPropertyChangedを使用しますが、UIは更新されず、PropertyChanged値は常にnullです。INotifyPropertyChanged - 常にnull
私が逃したもの、またはこの実装で何が間違っているかアドバイスできますか?
クラス:
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;
}
}
}
<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">
<Image.DataContext>
<local:ship/>
</Image.DataContext>
<Image.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform X="{Binding Path=ShipOnePos, Mode=OneWay}"/>
</TransformGroup>
</Image.RenderTransform>
コードをバインドUI
背後
あなたは彼がCallerMemberName属性 –
@GordonAllocmanにあなたがそれを呼び出すあなたのNotifyPropertyChangedメソッドにプロパティ名を渡していません、私は逃しました。 – WasGoodDone
@WasGoodDone良いキャッチを使用していますので、必要はありませんあなたのセッター –