0

MainPage.xamlには、次のようなデータテンプレートを含むリストボックスがあります。

<DataTemplate>
<TextBlock Name="DateTextBlock"  Text="{Binding Modified,  Converter={StaticResource RelativeTimeConverter}}"/>           
</DataTemplate>        

アプリを起動すると、変換が1回行われ、アプリを再起動するまで、別のページに移動してMainPage.xamlに戻っても、テキストブロックのテキストは同じままです。

私が欲しいのは、ユーザーが私のアプリを使用しているときに時間が経過することを示すために、Modifiedプロパティが変更されたときに一度だけではなく、コンバーターを継続的に使用することです。これはどのように達成できますか?

4

1 に答える 1

0

INotifyPropertyChangedを使用していますか?データバインディングをかなり明確に説明しているこの記事を参照してください。

編集:コメントからの新しい情報によると、INotifyPropertyChangedを使用していますが、プロパティについてUIに通知するソリューションの検索は定期的に変更されています。したがって、ある種のタイマー、たとえばDispatcherTimerの使用を検討してください。

DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(4);
timer.Tick += delegate(object s, EventArgs args)
{
    foreach (YourItem item in ViewModel.Items)
    {
        item.NotifyPropertyChanged("Modified");
    };
}
timer.Start();

また、(もちろん)このメソッドをYourItemクラスに追加します。

public void NotifyPropertyChanged(string propertyName)  
{
    OnPropertyChanged(propertyName); 
}
于 2012-12-13T12:19:10.747 に答える