所以我有一个简单的 RSS 阅读器,它有一个在应用程序启动时更新的提要。如何添加使新的未读项目保持不同颜色的功能?我想让用户看到自上次他/她打开应用程序以来哪些帖子是新的。
问问题
135 次
1 回答
3
假设你有一个类似的模型;
public class RSSItem {
public bool IsUnread { get; set; }
public string Title { get; set; }
}
您需要使用接受 a并返回 a 的a 将ForegroundColor
a绑定TextBlock
到您的IsUnread
属性。所以你的 XAML 可能看起来像;IValueConverter
bool
Color
<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 回答