1

そのため、アプリの起動時に更新されるフィードを持つ単純な RSS リーダーがあります。新しい未読アイテムを別の色で保持する機能を追加するにはどうすればよいですか? 前回アプリを開いてからどの投稿が新しいかをユーザーに表示したいと思います。

4

1 に答える 1

3

あなたが次のようなモデルを持っていると仮定します。

public class RSSItem {
  public bool IsUnread { get; set; }
  public string Title { get; set; }
}

を取り、を返すを使用して、ForegroundColorTextBlockIsUnreadプロパティにバインドする必要があります。したがって、XAMLは次のようになります。IValueConverterboolColor

<phone:PhoneApplicationPage.Resources>
  <converters:UnreadForegroundConverter x:Key="UnreadForegroundConverter" />
</phone:PhoneApplicationPage.Resources>

<ListBox x:Name="RSSItems">
  <DataTemplate>
    <TextBlock Text="{Binding Title}" Foreground="{Binding IsUnread, Converter={StaticResource UnreadForegroundConverter}}" />
  </DataTemplate>
</ListBox>

xmlns:convertersページのタグに属性を追加することを忘れないでください。

IValueConverter次に、ブール値から色への変換を行うためにを実装する必要があります。

public class UnreadForegroundConverter : IValueConverter {
  public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
    if ((bool)value == true) {
      return Application.Current.Resources["PhoneAccentColor"];
    }

    return Application.Current.Resources["PhoneForegroundColor"];
  }

  public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
    throw new NotImplementedException();
  }

}

RSSItemsそして明らかに、リストボックス、、をのコレクションにバインドする必要がありますRSSItem。例えば。

ObservableCollection<RSSItem> items = new ObservableCollection<RSSItem>();
// populate items somehow
RSSItems.ItemsSource = items;

お役に立てば幸いです。

于 2012-04-25T07:31:51.957 に答える