2012-04-25 9 views
1

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

+0

2つのことがあります:異なる色のアイテムを表示し、読み取ったものを覚えています。より具体的な質問は良いでしょう。 – Thilo

答えて

3

あなたは次のようなモデルを想定しています。

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

あなたはboolを取り、Colorを返しIValueConverterを使用してIsUnreadプロパティにTextBlockForegroundColorをバインドすることをお勧めします。したがって、XAMLは次のようになります。

<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(); 
    } 

} 

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

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

+0

優れたMrDavidson! –

関連する問題