1

所以我有一个简单的 RSS 阅读器,它有一个在应用程序启动时更新的提要。如何添加使新的未读项目保持不同颜色的功能?我想让用户看到自上次他/她打开应用程序以来哪些帖子是新的。

4

1 回答 1

3

假设你有一个类似的模型;

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

您需要使用接受 a并返回 a 的a 将ForegroundColora绑定TextBlock到您的IsUnread属性。所以你的 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();
  }

}

显然,您需要将列表框 , 绑定RSSItemsRSSItem. 例如。

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

希望有帮助。

于 2012-04-25T07:31:51.957 回答